日本語のトラックバックで問題

DrupalのTrackBack モジュールをテストしてきたのですが、日本語ページからのトラックバックがうまく表示されませんでした。エンコーディングが正しく認識されないのが問題です。

今回は問題はいくつもの要因が重なった結果でした。まずトラックバックを送る側がエンコーディングを指定していませんでした。TrackBackモジュールは送られてきたエンコーディングを使うのですが、指定されていない場合、内部でエンコーディングを検出します。

その検出でも問題がありました。サイトのロケールを使ってエンコーディングを決めるところがあるのですが、なんとロケールそのものが指定されていませんでした。その場合、自動的に英語(実際にはLatinのISO-8859-1)が使われてしまって、日本語は絶対に正しく認識されません。

そこでロケールを指定するようにしたのですが、それでもまだ正しく表示されません。日本語ロケールの場合、ISO-2022-JP, EUC-JP, SJISの3つを使って文字コードの検出を試みるのですが、それがうまく動いていません。PHPのmb_detect_encoding()にこの3つの文字コードを渡しているのですが、トラックバックの送り元はJIS(つまりISO-2022-JP)なのに常にSJISと判定されてしまいます。

幾つか調べたら、mb_detect_encoding()には検出する可能性のある文字コードとして「auto」を渡せることが判明。このautoを使ったところ、正しく文字コードが認識されるようになりました!

参考サイト:
http://cl.pocari.org/2005-07-10-1.html (Japanese)
http://labs.gmo-media.jp/archive/21 (Japanese)
http://je-pu-pu.jp/blog/archives/2005/02/mb_detect_encod.html (Japanese)

新しいコメントの投稿

このフィールドの内容は非公開にされ、公表されることはありません。
  • ウェブページアドレスとメールアドレスは、自動的にハイパーリンクに変換されます。
  • 使用できるHTMLタグ: <a> <em> <strong> <code> <cite> <ul> <ol> <li> <dl> <dt> <dd> <p>
  • 行と段落は自動的に折り返されます。
  • Amazon製品へのリンクを次の形式で作成することが出来ます。[amazon product_id inline|full|thumbnail]. 例: [amazon 1590597559 thumbnail]
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • 画像を追加することが出来ます。

書式オプションに関するより詳しい情報...

認証コード
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
画像で表示されている数字および記号を入力してください。