【PR】 マジックリスニングで12時間英語耳

【PR】 バイオリスニング体験談

【PR】 ターボセルでセルライト対策

【PR】 Adobe Photoshop Elements 8 日本語版 Windows版
 

「痴」「稚」が一杯。英語サイトを作ったら文字化け



【COREPRESS Cloud(コアプレスクラウド)】10日間お試し無料



英語サイトを覗いていて、日本語に出くわしたことはないでしょうか? 「痴人」「痴女」の「痴」、「幼稚」の「稚」、「溺れる」の「溺」、などです。文字化けするんだったら他の字でも良さそうなのに、何とも恥ずかしくなるような文字が出てくる場合があります。(右の画像は私がダミーで作成したもので、文法は正しいかどうかは分かりません。)

この文字化け、(海外サイトを頻繁に訪れる人には)かなり頻繁に現れます。試しに、Googleで検索してみます。

(参照)▼ 「痴」「稚」「溺」での検索結果
http://www.google.co.jp/search?q=%E7%97%B4+%E7%A8%9A+%E6%BA%BA&hl=ja&ie=UTF-8&oe=UTF-8
2003年6月7日時点で、17,700件の検索結果。2004年3月11日現在、19,500件の検索結果。検索結果のサマリーを見ていただければ分かりますが、9割り方は海外サイトです。また、「壇」「典」や「哲」「添」「撤」「鄭」「値」なども出現しています。何となく、タ行が多いことに気がつきます。

なぜ、海外サイトなのに、漢字が使われているのでしょうか? Googleの検索結果では確かに漢字が現れていても、実際にリンクをクリックしてそのページを見てみると、確かに漢字が現れている場合と、そうでない場合とがあります。

ブラウザで実際に表示させた場合に、文字化けが現れる場合と現れない場合がある理由については後述しますが、まず「痴」の正体を探ります。いくつかの検索結果を比較研究してみます。

パターン 文字化け例 その漢字
の音読み
その漢字の
URLエンコード
(Shift_JIS)
‘H→践 ex. ‘Hi → 践i %91H
‘I→選 ex. ‘I → 選 %91l
‘→閃 ex. ‘My → 閃y %91M
‘N→鮮 ex. ‘No → 鮮o %91N
‘T→禅 ex. ‘That → 禅hat %91T
‘Y→ ex. ‘ou → 塑ou %91Y
’d→壇 ex. I’d → I壇 %92d
’l→値 ex. I’ll → I値l %92l
’m→知 ex. I’m → I知 %92m
’r→池 ex. You’re → You池e %92r
’s→痴 ex. John’s book → John痴 book %92s
’t→稚 ex. isn’t → isn’t %92t
’v→致 ex. I’ve → I致e %92v
“A→鄭 ex. “Albert → 鄭lbert %93A
“B→釘 ex. “Broadband → 釘roadband %93B
“D→泥 ex. “Donald → 泥onald %93D
“G→敵 ex. “Get → 敵et %93G
“H→滴 ex. “He → 滴e %93H
“I→的 ex. “I → 的 %93I
“M→溺 ex. “Maybe → 溺aybe %93M
“P→撤 ex. “Please → 撤lease %93P
“S→鉄 ex. “She → 鉄he %93S
“T→典 ex. “The → 典he %93T
“W→展 ex. “Where → 展here %93W
“Y→添 ex. “You → 添ou %93Y

URLエンコードを求めるには、今まで何度か紹介しています自作Flashフォームを利用します。こちらにあります。

左の文字化け一覧から明らかなことは、文字化けするのは「‘(シングルクォテーション)」や「’(アポストロフィー)」、「“(ダブルクォテーション)」であることが分かります。ただ、よく見ると、このアポストロフィーやダブルクォテーション、何だか変です。妙に空白が目立ちます。

実は、これは日本語のOSで普通に入力して表示される「'(アポストロフィー)」や「"(ダブルクォーテーション」とは別物です。 iso-8859-1(Latin-1)一覧表を参照していただき、「9」の列に注目してください。グレーになっている部分です。91番(9の列。1の行。LEFT SINGLE QUOTATION MARK)と92番(9の列。2の行。RIGHT SINGLE QUOTATION MARK)、93番(9の列。3の行。LEFT DOUBLE QUOTATION MARK)にある文字こそ、件の「‘」、「’」及び「“」です。

ここに、左の表に出現する漢字をURLエンコードしたものに注目していただくと分かりますが、全て1バイト目が91〜93になっています。

つまり、この文字化けは、iso-8859-1のホームページを無理やりShift_JISで読み込もうとしているために起こっています。その証拠に、文字化けしたホームページでも、(Windowsの場合)ブラウザでエンコードを西ヨーロッパ言語(iso)に指定して読み込みなおすと文字化けが解消します。

94番の「”」(RIGHT DOUBLE QUOTATION MARK)も文字化けの候補として上がってきそうですが、実際には「”」の後ろに続くものは、たいていは半角スペース(%20)になると思いますがが、「0x9420」なる文字が存在しないため「・」と文字化けします。

では、なぜGoogleの検索サマリーはiso-8859-1のホームページをShift_JISのように誤認したり、また私たちがブラウザでそのページを表示させた場合に、文字化けが発生するのでしょうか? 結局は、「Googleの検索サマリーが文字化けする」の章で説明したことと同じなのですが、メタタグの指定が不適切であることが原因です。

Googleの検索結果に「痴」「稚」「致」などが現れるサイトを開き、HTMLソースを確認してみると、

  • iso-8859-1のページなのに、メタタグの指定が無い。これが圧倒的に多い。英語圏の世界に生きる人にとっては、メタタグで文字コードを指定する意味をあまり感じていないかもしれません。
  • 英文に日本語が混じっているので、「Shift_JIS」と指定しているのは分かりますが(また、これが正解です。)、Shift_JISには存在しない「“」などを使っているため、2バイト文字の1バイト目と解釈されます。 「"」「'」を代用すべきです。理由は後述します。
  • 原因がよく分からないもの。
に分類されました。

例えば、ダブルクォテーションであれば、英語圏でも「“」ならぬ「"」(ダブルクオテーション)や、「’」ならぬ「'」(シングルクォテーション)は存在し、実際、多くの海外サイトではこちらを使われているのですが、一部のサイトでは、私たち日本人が見ると文字化けする方のキー入力(Shift_JISには存在しないコード)をされているようです。そして、メタタグの指定もないため、日本語圏の我々が見ると文字化けして見えるというわけです。

そして、Googleではメタタグの指定が重要な要素を握るためサマリーが文字化けしていますが、IEなどのブラウザで表示させると、それぞれのブラウザの独自解釈によって正しく解釈できるケースが多いため、Googleのサマリーが文字化けしている場合でも、ブラウザ上では文字化けしないケースがあるのではと思います。これは、「Googleのサマリーが文字化け」の章で説明した「縺」「繧」などの大量出現文字化け(UTF-8の文書なのにShift_JISというメタタグを指定してしまうという致命的ミス)とはタイプが違うために、メタタグの指定忘れぐらいであれば、まだブラウザの方で知恵を働かせて、正しく表示させることができるということだと思います。

ここまで延々と説明してきて、私たちは日本語のサイトしか作らないから問題ないと思われていませんか? ただ、あなたのホームページが企業サイトであれば、English版を準備するということは、無いことも無いのではないでしょうか? 実際、上記の「痴」「稚」「溺」での検索結果(Google)を見てみても、いくつかJPドメインだったり、日本語の混じっているサイトも結構ありました。

例えば、そのEnglish版を海外の本社自身が準備したり、あるいは海外の翻訳会社などに製作してもらった際に、そのままアップすると文字化けするかもしれません。メタタグの指定などがないために、Shift_JISと解釈されてしまう可能性があるからです。これはWebmaseterであるあなたが、しっかりとチェックして修正すべき責任にになるのではないでしょうか? また、自身で英語のページを作成する際にはなおさらそうでしょう。Shift_JISに存在しないクォテーションを使う場合は、しっかりとiso-8859-1と解釈されるようにメタタグや.htaccessで指定すべきです。

この文字化けは、例えば、以下のようにすることで、純日本語環境下でも文字化けを再現できました。WindowsXP(IME2002)では、「かっこ」と入力しても変換候補に全角であれば半角であれ「‘’」「“”」は変換候補として表示されませんでしたが、文字コード表から「’(0x8166)」や「“(0x8167)」を入力し、それを秀丸を使って、「欧文」として保存しました。この際に、秀丸の方で自動的に「0x92」や「0x93」に置換してくれているのか、「文字コード変換できない文字が含まれているため、文字が失われる可能性があります。」というような警告もなく保存できました。この状態で文字コードの指定をメタタグなどでしっかりと指定してあれば、問題は起きませんでしたが、ブラウザが文字コードの解釈を間違えると「痴」や「稚」が現れました。また、、WindowsMe(IME2000)では、「かっこ」で変換すると「‘’」や「“”」が変換候補として表示されましたので、"より簡単に"文字化けを再現できるでしょう。

ですから、この「おたまじゃくし」のようなクォテーションを使わずに、Shift_JISでも問題なく使える「"」「'」を使用するのが一番無難です。もしくは、日本語が一切混じっていない場合ならば、メタタグでiso-8859-1としっかりと指定したり、今までに何回か紹介した.htaccessで文字コードを指定してあげると良いでしょう。もう一度書きますと、

AddType "text/html; charset=iso-8859-1" html

ただし、この指定をすると、そのディレクトリー内のHTMLファイル全ての文字コードがiso-8859-1になってしまうため、日本語のHTMLファイルとは分けるなどの作業が必要です。もしくは、拡張子を専用に定義して、

AddType "text/html; charset=iso-8859-1" iso

などとします。hogehoge.isoはこれで文字化けしません。ただ、これだと、拡張子で判別して自動巡回しているサーチエンジン用のロボットプログラムも多いと思われ、これだとサーチエンジン経由のアクセスをみすみす逃してしまうことになります。日本語ファイルは.htmlにし、iso-8859-1は.htmなどと分けるのであれば問題はないと思います。

(なお、ご利用になられているホームページサービスによっては、.htaccessを許可していない場合もあります。その場合は.htaccessが利用可能なレンタルサーバを借りなければいけないかもしれません。.htaccessが利用可能なサーバはこちらを参照してください。)

Shift_JISにない『半角』のダブルクォテーション「“」やシングルクォテーション「’」を日本語文書の中で何が何でも使いたいのであれば、「’ → ’」「“ → “」などとコードを直接指定する必要があります。Shift_JISには全角の「“(0x8167)」「’(0x8166)」しかありません(ただし、結局はWindowsの機能により、コード指定しても全角のクォテーションが表示されているように見えます)。このあたりは、「バックスラッシュ(\)」は全角の「\」で代用するかフォントの指定を英字フォントにするしかないのと事情は同じような気がします。

英語・日本語の混合サイトを作成しようと思えば、この「おたまじゃくし」のようなクォテーションは全角で表示せざるをえないのですが、これも不恰好です。そう考えると、日本語と英語の混合サイトを構築する際には、この「おたまじゃくし」のようなクォテーションは一切使わずに、「"」「'」で我慢するのが見栄え的にはすっきりすると思われます。その上でメタタグの文字コードはShift_JISを指定するのがbest solutionだと思います。

なお、サイト管理者としてではなく一般ユーザーとして訪問した英文サイトで、この種の文字化けにあったならば、ブラウザのエンコードを変更してあげればOKです。この手の文字化けは、ISO-8859-1の文章をShift_JISで読み込もうとしているために起こる文字化けなのですから、エンコードをISO-8859-1にしてあげればいいのです。Windows版IEなら左の画像のように、右クリックで、「エンコード」を「西ヨーロッパ言語(ISO)」にすれば良いのです。

次のページでは、機種依存文字を使っている場合に、Googleの検索結果サマリーはどうなるのかを考えてみます。