Safariはなぜ「IBM拡張文字」を表示しないのだろう

  • Mac OS Xでは、Apple Mail(Mail.app)でもテキストエディット(TextEdit.app)でも、「日本語(Shift JIS)」という表記はJIS X 0208:1997のシフト符号化表現(IANAに登録されているShift_JIS)を指している。Apple製のアプリではないJedit Xでも同様である。
  • が、SafariMac OS X 10.4.7で確認)の「日本語(Shift JIS)」は違う。charset=Shift_JIS(シフト符号化表現)としながらCP932のシステム外字を含むページが多く、charsetの名称と中身の乖離が常態化してしまっているため、ブラウザ側でも矛盾を呑み込まざるを得ないのだろう。このあたりの事情は、たとえばFirefoxでも同様である。
  • ただし、Safariの「日本語(Shift JIS)」は、CP932とも異なっている。すなわち、CP932のシステム外字のうち、「NEC特殊文字」(13区相当)と「NEC選定IBM拡張文字」(89〜92区相当)は表示するが、「IBM拡張文字」(115〜119区相当)を表示しない(U+FFFD REPLACEMENT CHARACTERとして表示する)のである。
  • これは非常に中途半端な仕様ではないだろうか。「charset=Shift_JISなのだから、機種依存文字は一切表示しない」というなら、理解できる。逆にFirefoxのように、「実態を重視してCP932のすべてのシステム外字をサポートする」という方針も理解できる。しかし、「NEC選定IBM拡張文字」を表示して「IBM拡張文字」を表示しないという仕様にどういう意味があるのか、ちょっと理解できない。
  • ちなみに以前に触れたとおりAppleAPIを用いると「Unicode→CP932」の変換において「IBM拡張文字」よりも「NEC選定IBM拡張文字」が優先されるようなのだが、逆方向の「CP932→Unicode」の変換(CP932のテキストの表示)においては、Apple Mailもテキストエディットも「IBM拡張文字」を欠落なく扱うことができる。