日本語メールの文字エンコーディングは歴史的な経緯からISO-2022-JPエンコーディングがよく利用されています。IANAの登録を検索すると、ISO-2022-JPからRFC 1468(JISコード)にたどり着きます。RFC 1468には、符号化文字集合について、下記のように記載があります。
「正しい」符号化文字集合を処理するためには、これら符号化文字集合に含まれる文字のみをISO-2022-JPエンコーディングしてメールで送付する必要があります。これら符号化文字集合に含まれない文字を送ると、文字化けが発生する場合があります。
ところが、困ったことにWindows用メールソフトのいくつかはISO-2022-JPエンコーディングをかたってISO-2022-JPの符号化文字集合に含まれない文字も送付可能な仕様になっています。デファクトスタンダードのメールソフトにおいて、そのような仕様になっているのが、余計に困るところです。
また、いくつかの携帯電話メールもISO-2022-JPの符号化文字集合に含まれない文字を送付してしまう仕様になっています(絵文字)。しかし、現在の日本語メール環境で最もサポートされている文字エンコーディングはISO-2022-JPなので、ISO-2022-JP以外の文字エンコーディングを使いたくないという事情もあります(メール受信側でサポートしない文字エンコーディングを与えると、確実に文字化けしてしまうからです)。
「無理が通れば道理が引っ込む」状態なのです……。早く日本語メール環境の大多数がUTF-8を適切に扱えるようになればいいのですけれどもね。
Webブラウザにおける文字化けも、頭の痛い問題です。HTMLを表示する際には、METAタグの文字エンコーディング指定とHTMLタグのLANG属性があれば適切に動作するはずです(もちろん、文字エンコーディング指定が「正しい」指定であることが必要です)。しかし、一部のWebブラウザはこれらの指定を誤認して文字化けを起こす場合があります。HTMLが正しく記述されていても、Webブラウザの実装にバグがあって誤認されて文字化けが発生する場合があるのです。
さらに、HTMLからPOSTする際にも文字化けを起こす可能性があります。ウェブブラウザが適切な文字コードでPOSTしたうえで、サーバプログラム側で文字コードを適切に処理できる必要があるからです(そして、それぞれに不具合が混入する可能性があります)。
フォントが準拠する規格が異なるために文字化けが発生する場合があります。最近世間を騒がせたものとして、Windows VistaとWindows XP以前との間で表示/印字される文字の形が変わるというニュースがありましたが、これは、Windows VistaのフォントがJIS X 0213:2004に対応したことによるものです。詳しくは、「Vistaのフォント違いによる文字化け」などをご覧ください。
このように、私たちがプログラミングに従事していくうえで、文字化けが発生し得るポイントが数多くあります。そして、困ったことにそれらは複数が重なり合う場合があります。
あなたがもし文字化けに遭遇してしまい、それを改善したいと思った場合には、まずどのようなことがどこで発生しているのかを調べることが重要だと考えます。文字化けの原因が分かれば、関連する規格や標準を調べてみることから状況改善につながる期待が持てます。
ネットワークが関連する文字化けの場合には、ネットワークキャプチャ(プロトコルアナライザとも呼ばれる)などのツールを利用することによって発生している現象が把握できる場合があります(ただし、ネットワークキャプチャのようなツールは ネットワークによっては利用が制限されている場合もあります)。
あなたがプログラミングしている個所での文字化けの解析には、この記事で紹介したような方法を活用してロギングを行うこともできます。実際の文字コードの値を収集することにより原因究明が進む場合があります。
文字化けは、再現性があれば何かしらの原因究明ができると思います。場当たり的な対処をせず、内容をはっきり把握したうえで対応していきたいものです。
この記事では、文字コードの話題を扱ってきましたが、文字コード自体、難易度が高いうえに掲載ページ数の都合などで、どうしても説明が舌足らずなものになってしまいました。皆さんが文字コードについて掘り下げて学びたいと思ったときにオススメの参考書籍をいくつか紹介します。この記事執筆の際にも、これら書籍を参考にさせていただきました。
まず、皆さんが文字コードを基本から学びたいという場合には、『文字コード超研究』を推奨します。分かりやすい文章で書かれたこの本を一通り読み進めることで、文字コードに関する基本を学習できるようになっています。
文字コードを理解するうえで、文字コードの歴史を知っておく必要が出てくる場合があります。歴史や経緯故に、その文字コードが使われている場合などが存在するからです。文字コードの歴史を知るうえで有益なのが、以下の2冊です。
表紙の絵から「フグ本」の愛称で呼ばれる、文字コード処理に関する重要な書籍があります。それが、『CJKV日中韓越情報処理』です。日本語情報処理に関する情報をたどっていくと、この本に行き当たることが多々あります。また、この本はいくつかの国の言語に翻訳されているので、ほかの国の人と日本語情報処理に関する情報を共有していくうえでも、有益です。
blanco Framework(コミッタ)
伊賀 敏樹(いが としき)
ハンドル:いがぴょん
1968年生まれ。現在、NTTデータ ビジネスブレインズ 第一SI事業部 ソリューショングループ所属。システム開発の技術支援などに従事する。仕事におけるJava言語とのかかわりは1998年から。 現在 blanco Frameworkというオープンソースによるソースコード自動生成タイプの開発フレームワーク提供に取り組んでいる。 趣味はヴァイオリン演奏。アマチュアオーケストラで演奏することもある。
ホームページ
いがぴょんの日記ウェブページv2(1996年から続けているWeb日記)
主な著書
「やさしく学ぶ基礎からのJDBC」
「Javaプログラミング[アプリケーション編]ステップアップラーニング」
Copyright © ITmedia, Inc. All Rights Reserved.