2011-03-10
■EUC-JPのページにおけるWindows外字がめんどくさいことになっている件
- EUC-JPのページにおけるWindows外字の扱いが、ややこしいことになっている。まあ、もともと外字なので化けることがあるのは当然とも言えるのだけれど、化け方のバリエーションが豊富で、どういう理屈で化けているのかがわかりにくい。以下、はてなとmixiで目に付いた文字化けについて、ざっとまとめてみようと思う。
- これは、はてなのサーバがCP51932のNEC選定IBM拡張文字領域をJIS X 0213と見なした上で補助漢字に変換しているためだが、へんな仕様だと思う(下図)。たぶんPerlのEncodeモジュールでEUC-JPをUnicodeに変換した上でEUC-JPに戻しているのだろう*1。
- 前回のエントリで述べたように、SafariにおけるIBM拡張文字の扱いは謎の独自仕様だが、mixiのサーバはこれをeucJP-msのIBM拡張文字と見なした上でCP51932のNEC選定IBM拡張文字に変換しているようだ(下図)。
- この場面では、はてなのサーバは、Safari独自のIBM拡張文字を理解した上でCP51932のNEC選定IBM拡張文字に変換しているように見える(下図)。(括弧内追記。コメント欄でえむけいさんより『「その場編集」モードで化けないのははてながIBM-eucJPを解釈しているからではなく、ブラウザがUTF-8で送信しているからのようです』とのご指摘がありました)
- しかし、Firefoxで正しく「﨑」に見えているはてなダイアリーをブックマークすると、(はてなブックマークのページはEUC-JPではなくUTF-8であるため)たぶんPerlのEncodeでUnicodeに変換されることにより、「粼」に化ける(下図)。
- ちょっと前にkoikekaishoさんから「﨑がSafariで豆腐になるんだよね」という話を聞いたのをきっかけとして、検証したりしているうちに話がふくらんでしまったエントリ。結論としては、EUC-JPのページにおけるWindows外字は数値文字参照で表現するのが安全だと思う。
*1:PerlのEncodeモジュールについては、twitterで@nalshさんからご教示いただきました(http://twitter.com/nalsh/status/43276900684005376)。ありがとうございます。
2011-02-25
2010-12-09
■Mac OS X 10.5のMailでドコモ発のメール本文が表示されないトラブル
- ドコモからケータイ以外にメールを送る場合、原則として、iモード絵文字は「〓」に変換される。しかし、ウェブメールの「Yahoo!メール」は絵文字に対応しているため、ドコモ発yahooアカウント宛のメールでは、iモード絵文字はISO-2022-JPの未定義領域を使って符号化される。
- 以下の図はいずれも、「メール」を表すiモード絵文字(キャリア外字)と「マジ!?」のデコメ絵文字(添付画像)を含むドコモ発のメッセージ。まず、下図はYahooアカウント宛のメッセージをウェブの「Yahoo!メール」で受信し表示したもの。
- 下図は、同じくyahooアカウント宛のメッセージをMac OS X 10.6(Snow Leopard)のMailで表示したもの。iモード絵文字は化けているが、それ以外の文字は読める。
2010-10-14
■InDesign CS5でフォントを変えようとすると
- InDesign CS5でaalt属性を持つ文字のフォントを変更しようとすると、ロックされて変更できない、あるいは変更後に化けることがある。このトラブルは、「変更前のフォント」が、モリサワPro、ヒラギノPro/ProNなどの場合に発生する*1。
- 下図はCS4とCS5の比較。CS5、モリサワPro(またはヒラギノなど)、aaltという条件が重なると、フォントを変更しようとしても、ほとんど場合、ロックされる。下図青字は、フォントの変更の際に(文字化けを防ぐために)異体字属性が調整されているケース。
- このようなロックは「不要なはずのロック」だが、Cmd+Optionで強制的にフォントを変更(オーバーライド)すると、異体字属性の調整が行われないので、文字化けする可能性がある(下図)。オーバーライドというのは、基本的に「文字化け覚悟の手段」であると考えるべきだろう。