[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

[debian-users:33024] [FAQ] /usr/share/doc/ の日本語 html 文書と apache (>=1.3.12)



 ハマったあげく解決してみたら FAQ だったのですが,アーカイヴに
ある情報だけではやっぱり解決できなかった (あるいはミスリード
された?) であろうと感じました。

 そこで,正しそうな対処法を纏めてみました。


[Q] /usr/share/doc/path_to_doc/ 以下に apache 経由で
    http://localhost/doc/path_to_doc/ のようにしてアクセスすると,
    日本語の文書が文字化けします。


[A] httpd.conf に以下の記述を追加してください:

     <Location /doc/path_to_doc/>
       AddDefaultCharset off
     </Location>

    目的の文書の文字コードが分かっている場合はそれに合わせて
    記述する方が良いでしょう (下記参照)。

    いわゆる JIS コードの場合:

     <Location /doc/path_to_doc/>
       AddDefaultCharset ISO-2022-JP
     </Location>

    EUC-JP の場合:

     <Location /doc/path_to_doc/>
       AddDefaultCharset EUC-JP
     </Location>

    shift JIS の場合:

     <Location /doc/path_to_doc/>
       AddDefaultCharset Shift_JIS
     </Location>


[補足]

* セキュリティ上の理由から,apache (>= 1.3.12) のデフォルトでは
  httpd.conf の中で AddDefaultCharset on と設定されています。
  このため apache は META タグを無視して Content-Type ヘッダに
  誤った文字コード charset=iso-8859-1 を送出してしまいます。

* といって,AddDefaultCharset を切ってしまう (出現行をコメント
  アウトするとか off にするとか) のは **危険** です。
  Cf. http://httpd.apache.org/info/css-security/


* .htaccess を使っての設定も可能なはず。ただし,やはり httpd.conf
  の修正が必要になります。


* httpd.conf を改変しない方針:

   # find /usr/share/doc/path_to_doc/ \
     -name '*.html' \
     -exec mv \{\} \{\}.ja.jis \;

  ただし,ISO-2022-JP 以外のコードの文書は依然として文字化けします。

* JIS 以外のコードの場合,デフォルトの httpd.conf に全く手を
   加えずにすむ方法というのはなさそうでした。ただし,httpd.conf
   に例えば

    AddCharset EUC-JP .euc

  のような記述を加えておけば,該当ファイルを:

    % find /usr/share/doc/path_to_doc/ \! -type d \
      -name '*.html' -exec grep charset=euc-jp \{\} \; \
      -print

  と探して .ja.euc を付けることで対応可能です。

  # これは,パッケージレベルで対応すべきことがらのように思えます;
  # 詳しくは debian-devel に投げます。


--
井上 博之 / INOUE Hiroyuki
E-Mail: dombly@xxxxxxxxxxxxxxxx
PGP Fingerprint: CAF3 05AB B2C6 0869 2876  1F68 3C49 F871 BC66 3D8D
...................................................................
:Juiliett Class Submarine CBNRC MDA MIT-LL Kennedy S Box lock
:picking JPL infowar csim Lexis-Nexis North Korea Baranyi CDMA
:cryptanalysis
:(Cf. http://www.gnu.org/manual/emacs/html_chapter/emacs_29.html#SEC372)