Reply to comment

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

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)

Reply

The content of this field is kept private and will not be shown publicly.
  • Web page addresses and e-mail addresses turn into links automatically.
  • Allowed HTML tags: <a> <em> <strong> <code> <cite> <ul> <ol> <li> <dl> <dt> <dd> <p>
  • Lines and paragraphs break automatically.
  • Link to Amazon products with: [amazon product_id inline|full|thumbnail]. Example: [amazon 1590597559 thumbnail]
  • You may post code using <code>...</code> (generic) or <?php ... ?> (highlighted PHP) tags.
  • Images can be added to this post.

More information about formatting options

CAPTCHA
This question is for testing whether you are a human visitor and to prevent automated spam submissions.
Image CAPTCHA
Copy the characters (respecting upper/lower case) from the image.