« PHP+PearでSMTP認証・送信 | トップページ | ドコモ携帯の「550 Unknown user」エラーは「あてにならない?」 »

2005/03/10

IE5.0の一部の文字化け(UTF-8で)の原因と対策

Windows98SEのデフォルトのInternet Explorerのバージョンは5.00.2614.3500だ。IE5.0xには実に多くのマイナーバージョンが存在します。マイクロソフト社の下記の二つの文書:

●Internet Explorer のバージョン確認方法
http://www.microsoft.com/japan/security/bulletins/ver_ie.mspx

●[IE5] Internet Explorer 5.0 のリリースされたバージョンとビルド番号
http://support.microsoft.com/default.aspx?scid=kb;ja;JP414907

により、次の表のようにまとめられます。

Internet Explorer 5.01 SP45.00.3700.1000 (Windows 2000 SP4)
Internet Explorer 5.01 SP35.00.3502.1000 (Windows 2000 SP3)
Internet Explorer 5.01 SP25.00.3314.2101
5.00.3315.1000 (Windows 2000 SP2)
Internet Explorer 5.01 SP15.00.3105.0106
5.00.3103.1000 (Windows 2000 SP1)
Internet Explorer 5.015.00.2919.6307
5.00.2920.0000 (Windows 2000)
Internet Explorer 5.05.00.2014.0216
5.00.2314.1003(Office 2000 付属のものと同一)
5.00.2614.3500 (Windows 98 SE)

のようになります。今回発見したのは、Windows98SE付属の5.00.2614.3500における文字化けです。

サンプルページ(文字コードはUTF-8で書かれています。)を開くと、このIE5.00.2614.3500では、

のように文字化けします。本来は、

のようにならなければなりません。

また、不思議なことに、ページを記述しているHTMLソースの文字コードをUTF-8からShift_JISに変更した、全く同一テキストのページは、IE5.00.2614.3500でも文字化けしません。

まず、3行目の「画像」が「□□」のように文字化けしているのですが、2行目の「画像」は文字化けしません。2行目、3行目ともソースは「&nbsp;画像<br>」であり全く同じなのですが、3行目だけ文字化けします。さらに、3行目のソースを「&nbsp;m画像<br>」と「m」を追加してやると、どういうわけか、

のように3行目の「画像」も文字化けしなくなります。

さらに、同じIE5.0xでも、Windows98の端末で利用しているIE5.01sp2(5.00.3314.2101)では、このような文字化けは一切発生しません。むむむ。ページ全体が文字化けするのであれば、あるいみ分かりやすいのですが、ページ内のごく一部だけ文字化けし、その出現パターンが全く読めません。IE5.00.2614.3500の固有の問題なのか?

この問題の原因をいろいろ調査しましたが結局分からず、他のことを調べている時に、偶然、解法を見つけました。マイクロソフトの公式技術文書にちゃんと掲載されていました。

●[IE5]sans-serif を指定した HTML ファイルを表示すると文字化け
http://support.microsoft.com/default.aspx?scid=kb;ja;417057

です。抜粋しますと、

ご使用になられているコンピュータに News Gothic MT(NWGHC.ttf) 、 News Gothic MT Bold ( NWGHCB.ttf )、 News Gothic MT Italic や Lucida Sans Italic 等のフォントがインストールされている場合、Internet Explorer は sans-serif フォントで表示できない日本語の表示を不適切なフォントで表示しようとする為に日本語が正しく表記されず、□で表示される現象が発生することがあります。
だそうです。

早速、98SE端末のフォントを調べてみると、これらのフォントがインストールされていました。さらに、Arial Unicode MSを試験的に他の端末から入れてみると文字化けが解消しました(フォントのこのような利用はライセンス違反になりますので、実験後すぐに削除しました)。先ほどの例でいうところの3行目の「&nbsp;画像<br>」には、2行目の「&nbsp;m画像<br>」とは明らかに異なるフォントが当たっているのですが、文字化けは解消しています。

推測ですが、sans-serifフォントを指定しているわけでないHTMLファイルであっても、文字コードがUTF-8になると、sans-serifを指定していることと同じ結果になるようです。

そこで、フォントをHTMLソース中で明示的に指定してあげ、「<font face="MS ゴシック">」(いつも私は悩のですが、「MS」は全角で、「MS」と「ゴシック」の間は半角スペース)を指定してあげると文字化けは解消しました。

IE5.0を使っているユーザーは、私が運営しているサイトのアクセスログによれば、0.8%前後です(ちなみに、IE5.01は1.5%ほどいます。)。これを多いと見るか少ないと見るかは人それぞれですが、知っておいて損はない話だと思います。

それにしても、IE5.0はマイナーバージョンが多すぎですね。特にWindows2000でサービスパックごとにIEのバージョンが異なるというのは始末に終えません。また、わざわざセキュリティ上リスクのあるSP2やSP3を準備する気にもなりません。これらのバージョンのスタンドアローン型のIEがあればいいのですが、以前ご紹介したSkyzyx.comで配布されているのはIE5.01SP2なので駄目です。このマイナーバージョンの入手は、ブラウザ・マニアの私でも入手を試みる気持ちが今のところ起きないですね。

----------------------
結論
Windows98SE付属のIE5.00.2614.3500では、UTF-8のHTMLファイルで一部の文字が文字化けすることがあり、その場合は、「MS ゴシック」などを明示的に指定してあげれば、文字化けが解消することがあります。

|

« PHP+PearでSMTP認証・送信 | トップページ | ドコモ携帯の「550 Unknown user」エラーは「あてにならない?」 »

コメント

コメントを書く



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


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



トラックバック

この記事のトラックバックURL:
http://app.cocolog-nifty.com/t/trackback/67411/3248936

この記事へのトラックバック一覧です: IE5.0の一部の文字化け(UTF-8で)の原因と対策:

« PHP+PearでSMTP認証・送信 | トップページ | ドコモ携帯の「550 Unknown user」エラーは「あてにならない?」 »