Mac OS Xの文字コード問題に関するメモ このページをアンテナに追加 RSSフィード

2011-03-10

EUC-JPのページにおけるWindows外字がめんどくさいことになっている件


  • EUC-JPのページにおけるWindows外字の扱いが、ややこしいことになっている。まあ、もともと外字なので化けることがあるのは当然とも言えるのだけれど、化け方のバリエーションが豊富で、どういう理屈で化けているのかがわかりにくい。以下、はてなmixiで目に付いた文字化けについて、ざっとまとめてみようと思う。

f:id:NAOI:20110310174342p:image

f:id:NAOI:20110310174446p:image

  • mixiの日記でMac OS XSafariから「﨑」を入力すると、豆腐に化ける。Safariで豆腐に見えているこの字は、Firefoxでは「凬」と表示される(下図)。

f:id:NAOI:20110310174633p:image

  • 前回のエントリで述べたように、SafariにおけるIBM拡張文字の扱いは謎の独自仕様だが、mixiサーバはこれをeucJP-msIBM拡張文字と見なした上でCP51932のNEC選定IBM拡張文字に変換しているようだ(下図)。

f:id:NAOI:20110310174447p:image

f:id:NAOI:20110310174448p:image

f:id:NAOI:20110310174449p:image

  • はてなダイアリーの「その場編集」画面でSafariから「﨑」を入力して「保存」ボタンを押すと豆腐に化けるが、これはFirefoxからは「﨑」に見える(下図)。

f:id:NAOI:20110310174452p:image

  • この場面では、はてなサーバは、Safari独自のIBM拡張文字を理解した上でCP51932のNEC選定IBM拡張文字に変換しているように見える(下図)。(括弧内追記。コメント欄でえむけいさんより『「その場編集」モードで化けないのははてなIBM-eucJPを解釈しているからではなく、ブラウザがUTF-8で送信しているからのようです』とのご指摘がありました)

f:id:NAOI:20110310174451p:image

f:id:NAOI:20110310174450p:image

  • ちょっと前にkoikekaishoさんから「﨑がSafariで豆腐になるんだよね」という話を聞いたのをきっかけとして、検証したりしているうちに話がふくらんでしまったエントリ。結論としては、EUC-JPのページにおけるWindows外字は数値文字参照で表現するのが安全だと思う。

*1PerlのEncodeモジュールについては、twitterで@nalshさんからご教示いただきました(http://twitter.com/nalsh/status/43276900684005376)。ありがとうございます。

nursenurse 2011/03/10 21:39 へぇ、はてなはIBM-eucJP解釈してるんですねぇ…。
調査お疲れ様です。

> FirefoxまたはChromeから

IE もですかね。
ちなみに、Operaは意味不明なバイト列を送っているのでDSK-330631としてバグ報告したが、第三者には見れない模様。

> JIS X 0213

CP51932 と対比させるなら EUC-JISX0213 という語が正確かと。
細かく言うと、「Firefox拡張EUC-JPのCP51932互換部分」と「Perl拡張EUC-JPのEUC-JISX0213互換部分」ですか。

> 「mixのサーバ」
「mixiのサーバ」のtypoですね

> SafariのEUC-JP

これは WebKit がエンコーディング変換に使っている ICU で ibm-33722_P12A_P12A-2004_U2 と呼ばれているエンコーディングで、さらに元を辿ると、IBM-eucJP というやつのようです。
http://home.m05.itscom.net/numa/cde/sjis-euc/euc.html
ICU が EUC-JP を ibm-33722_P12A_P12A-2004_U2 の alias としているらしく、こんなことに。(CP51932 という alias もこいつはもっている)

NAOINAOI 2011/03/10 23:56 ありがとうございます。とりあえずtypoは直しました。「EUC-JISX0213」という用語は「細かく言うと」の注釈抜きでは使いたくなかったので、カッコ付きのぼかした表現にしたつもりなんですが、厳密に言えばご指摘のとおりです。

NAOINAOI 2011/03/11 14:27 これですね。http://source.icu-project.org/repos/icu/data/trunk/charset/data/ucm/ibm-33722_P12A_P12A-2004_U2.ucm

えむけいえむけい 2011/03/27 21:43 「その場編集」モードで化けないのははてながIBM-eucJPを解釈しているからではなく、ブラウザがUTF-8で送信しているからのようです。
全部UTF-8にすればいいのに。

NAOINAOI 2011/03/28 13:44 ありがとうございます。追記しておきました。

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証