« Mac版IEとCSSハック(@importに関するバグの利用) | トップページ | 6万円イヤホンE500PTHが大人気、品切れ状態 »

2006/09/10

Mac版IEでだけドロップキャップが文字化け



ThinkPad 人気のモデルが翌営業日出荷。

マック版IEにはさまざまな不具合がありますが、実はこの記事のように、スタイルシートを使って、最初の文字だけ大きく表示させる手法(ドロップキャップ)を使うと、Mac版IEでは、一文字目が半角英数字ではなく、2バイト文字であった場合、文字化けします。

この記事の一文字目の「マ」が「}」に文字化けします。この文字化けの仕方には基本法則があります。「マ」はShift_JISの場合、1バイト目が0x83、2バイト目が0x7Dである。この2バイト目の0x7Dは、単独では、「}」である。「マ」が「}」に文字化けする理屈は割と簡単です。

 Shift_JISにおけるcharcodeを求めるには、いろいろな方法がありますが、たとえば、「ウェブマスターのための文字化け講座『CGIで特定の文字(表・予・申・能など)が文字化けする』」にあるようなFlashによるURLエンコーダーをご利用ください。「あ」をURLエンコードすると「%82%A0」になりますので、charcodeは「0x82A0」だと分かります。

同様に、平仮名の「か」は「0x82A9」ですから、2バイト目の「0xA9」は「ゥ」であるため、Mac版IEでは、「か」がそのように文字化けします。また、「文」なら「0x95B6」であるため、2バイト目の「0xB6」である半角カタカナの「カ」に文字化けします。

ただ、場合によっては、一文字目だけでなく、2文字目も文字化けする場合があります。例えば、「具体的」という言葉で始まる文章の場合、「具」が「0x8BEF」なのですが、この2バイト目の「0xEF」(実際には、□のような文字というか図形。要するにShift_JISで割り当てられている文字がないということだと思います。)と、次の漢字「体」の「0x91CC」の一バイト目の「0x91」が合体して、「0xEF91」なる新しい字と、「体」の2バイト目の「0xCC」=「フ」(半角カタカナの「フ」)が出現します。

一文字目だけ文字化けする場合と、2文字目まで文字化けする場合の違いはよく分かりません。

また、ページのエンコードがShift_JISではなくEUC-JPやUTF-8の場合どうなのかと調べてみましたが、不思議なことに文字化けの仕方は全く一緒でした。EUC-JPやUTF-8のページであったとしても、Shift_JISでのcharcodeが元になって、文字化けしているようです。

この問題を回避するのは、昨日紹介したようなCSSハック(Mac版IEの@importに関する不具合を利用する方法など)によって、Mac版IEにだけ、スタイルシートが適用されないようにすることです。このページの記事では、敢えてMac版IEでは文字化けして見えるようにしてあります。

|

« Mac版IEとCSSハック(@importに関するバグの利用) | トップページ | 6万円イヤホンE500PTHが大人気、品切れ状態 »

コメント

コメントを書く



(ウェブ上には掲載しません)


コメントは記事投稿者が公開するまで表示されません。



トラックバック


この記事へのトラックバック一覧です: Mac版IEでだけドロップキャップが文字化け:

« Mac版IEとCSSハック(@importに関するバグの利用) | トップページ | 6万円イヤホンE500PTHが大人気、品切れ状態 »