bonji
@bonji

Are you sure you want to delete the question?

If your question is resolved, you may close it.

Leaving a resolved question undeleted may help others!

We hope you find it useful!

Sphinxでビルド時に、日本語ファイル名などをURLエンコーディングしない方法はありますか?

Sphinxでビルドすると、日本語ファイル名を参照している部分が、URLエンコーディングされてHTMLが吐き出されます。

この状態だと、その参照先のファイルにリンクできない状況になります。

このURLエンコーディングを自動に行わない方法を知りたいのですが、どなたかご存知の方は教えていただけるとありがたいです。

具体的には

SphinxでMarkdownを利用した方法で、マニュアルをビルドしています。
日本語のファイル名の画像ファイルだと、ビルド時にWARNING: 画像ファイルが読み込めませんのワーニングが出てbuildフォルダ内に対象のファイルが移送されない状態です。

ファイル名を全てアルファベットにすれば解決できますが、これも別作業者が既にスクリーンショットを行なった後のものでリネームも大変です。

また、ページ内アンカーリンク(Markdownでいう[ほげ](#ほげ))部分も当然<h2>要素(##)が日本語だとエンコードされリンクがうまくできない状況です。

make html時に発生している問題・エラー

~~~/index.md:18: WARNING: 画像ファイルが読み込めません: main/%27img/%E3%82%B5%E3%83%9B%E3%82%9A%E3%83%BC%E3%83%88%E3%82%B5%E3%82%A4%E3%83%88.png

Markdown記述

![サポートサイト](img/サポートサイト.png)

ビルド後のHTML

画像ファイルがビルドされずに、リンク先を失った状態となる。
また、吐き出されたHTMLソースコードはURLエンコードされている。

<p>
<img alt="サポートサイト" src="main/img/%E3%82%B5%E3%83%9B%E3%82%9A%E3%83%BC%E3%83%88%E3%82%B5%E3%82%A4%E3%83%88.png" />
</p>

理想の状態

上記のような、URLエンコーディングされない状況を望んでいます。

<p>
<img alt="サポートサイト" src="main/img/サポートサイト.png" />
</p>

設定した conf.py

extensions = [
    'myst_parser'
]

templates_path = ['_templates']

language = 'ja'

exclude_patterns = []

html_static_path = ['_static']
source_suffix = {
    '.rst': 'restructuredtext',
    '.txt': 'markdown',
    '.md': 'markdown',
}
html_theme = "sphinx_rtd_theme"
html_show_sourcelink = False
html_style = 'css/theme_custom.css'
# source_encoding = 'utf-8-sig'

自分の環境

  • 制作OS: MacOS 11.5
  • Python: 3.9.6
  • pip: 21.1.3 from python 3.9
  • Sphinx: 4.1.1
  • sphinx-rtd-theme: 0.5.2
  • MyST-parser: 0.15.1

自分で試したこと

試しに、conf.pyに全体的な出力エンコーディングの設定を変更してみたが変わらず。

 html_output_encoding = 'x-SJIS_0213'

MarkDownパーサーの変更

conf.pyを以下変更追加して、MarkDownパーサーを変更してみました。
が、結果変わらず。

extensions = [
    # 'myst_parser'
    'recommonmark'
]
source_parsers = {
   '.md': 'recommonmark.parser.CommonMarkParser',
}

標準では

念の為、当方の環境要因の懸念事項として、reSTでの確認をしてみましたが、reference internalとして生成してるので問題なくビルドできていることも確認ずみ。

.. hoge:


:ref:`hoge`

...

激しくほげ
----------------

0

No Answers yet.

Your answer might help someone💌