続、円記号に気をつけろ
Monday, 23. October 2006, 16:54:59
円記号が U+00a5 になっていたメールのソースを確認しました。
結論: U+00a5 にしたのは Opera。
問題のメールは Outlook(Exchange) から送信されており、メッセージソース上は何も問題ない ISO-2022-JP のメールでした。円記号もソース中は \x5c でした。
・・・しかし、何かが違うようです。
このメッセージソースを Peggy で別名保存して Opera にインポートさせると、U+00a5 への変換をしなかったのです。・・・んんん??
さらに不思議なことに、Peggy で別名保存したメッセージソースと、オリジナルのメッセージソースとの diff を取ると、目視では違いのない差分が示されました。
両者の違いは、マルチバイト文字列の後「ここからは英数字です」を意味するエスケープシーケンスでした。
オリジナルのメッセージソースでは、「ESC "(" "7" (ここからは JIS X 0201)」です。
一方で Peggy で保存したメッセージソースは、「ESC "(" "B" (ここからは ASCII)」です。
なるほど、Opera はこんな細かいところに(忠実に?)反応していました。
確かに、JIS X 0201 では文字コード \x5c は円記号なので、これを UNICODE にマッピングすると U+00a5 の円記号が妥当でしょう。
ASCII では文字コード \x5c はバックスラッシュなので、これを UNICODE にマッピングすると U+005c のバックスラッシュが妥当でしょう。
しかし、Windows はそんなのドン無視で、ASCII だろうと JIS X 0201 だろうと \x5c は U+005c にマッピングされます。
(バックスラッシュとして見えるか、円記号として見えるかは、フォント次第(--; )
というわけで、Opera の忠実?な対応が裏目に出てしまった格好です。
考えてみると、\x5c を円記号とみなしたで考えたのが久しぶりのような気がします。
Peggy では、\x5c をバックスラッシュとして表示するフォントを使ってますし、円記号で表示されるフォントで見ても、人と話すときは常に「ばくすら」ですから。。。
結論: U+00a5 にしたのは Opera。
問題のメールは Outlook(Exchange) から送信されており、メッセージソース上は何も問題ない ISO-2022-JP のメールでした。円記号もソース中は \x5c でした。
・・・しかし、何かが違うようです。
このメッセージソースを Peggy で別名保存して Opera にインポートさせると、U+00a5 への変換をしなかったのです。・・・んんん??
さらに不思議なことに、Peggy で別名保存したメッセージソースと、オリジナルのメッセージソースとの diff を取ると、目視では違いのない差分が示されました。
両者の違いは、マルチバイト文字列の後「ここからは英数字です」を意味するエスケープシーケンスでした。
オリジナルのメッセージソースでは、「ESC "(" "7" (ここからは JIS X 0201)」です。
一方で Peggy で保存したメッセージソースは、「ESC "(" "B" (ここからは ASCII)」です。
なるほど、Opera はこんな細かいところに(忠実に?)反応していました。
確かに、JIS X 0201 では文字コード \x5c は円記号なので、これを UNICODE にマッピングすると U+00a5 の円記号が妥当でしょう。
ASCII では文字コード \x5c はバックスラッシュなので、これを UNICODE にマッピングすると U+005c のバックスラッシュが妥当でしょう。
しかし、Windows はそんなのドン無視で、ASCII だろうと JIS X 0201 だろうと \x5c は U+005c にマッピングされます。
(バックスラッシュとして見えるか、円記号として見えるかは、フォント次第(--; )
というわけで、Opera の忠実?な対応が裏目に出てしまった格好です。
考えてみると、\x5c を円記号とみなしたで考えたのが久しぶりのような気がします。
Peggy では、\x5c をバックスラッシュとして表示するフォントを使ってますし、円記号で表示されるフォントで見ても、人と話すときは常に「ばくすら」ですから。。。



