連載
» 2007年06月21日 00時00分 公開

プログラマーの常識をJavaで身につける(6):‘愛’で学ぶ文字コードと文字化けの常識 (4/4)

[伊賀敏樹,NTTデータ ビジネスブレインズ]
前のページへ 1|2|3|4       

メールにおける文字化け
〜なぜ、友人からの絵文字メールは読めないのか?

 日本語メールの文字エンコーディングは歴史的な経緯からISO-2022-JPエンコーディングがよく利用されています。IANAの登録を検索すると、ISO-2022-JPからRFC 1468JISコード)にたどり着きます。RFC 1468には、符号化文字集合について、下記のように記載があります。

  • ASCII
  • JIS X 0201-1976
  • JIS X 0208-1978
  • JIS X 0208-1983

 「正しい」符号化文字集合を処理するためには、これら符号化文字集合に含まれる文字のみをISO-2022-JPエンコーディングしてメールで送付する必要があります。これら符号化文字集合に含まれない文字を送ると、文字化けが発生する場合があります。

 ところが、困ったことにWindows用メールソフトのいくつかはISO-2022-JPエンコーディングをかたってISO-2022-JPの符号化文字集合に含まれない文字も送付可能な仕様になっています。デファクトスタンダードのメールソフトにおいて、そのような仕様になっているのが、余計に困るところです。

 また、いくつかの携帯電話メールもISO-2022-JPの符号化文字集合に含まれない文字を送付してしまう仕様になっています(絵文字)。しかし、現在の日本語メール環境で最もサポートされている文字エンコーディングはISO-2022-JPなので、ISO-2022-JP以外の文字エンコーディングを使いたくないという事情もあります(メール受信側でサポートしない文字エンコーディングを与えると、確実に文字化けしてしまうからです)。

 「無理が通れば道理が引っ込む」状態なのです……。早く日本語メール環境の大多数がUTF-8を適切に扱えるようになればいいのですけれどもね。

Webブラウザにおける文字化け

 Webブラウザにおける文字化けも、頭の痛い問題です。HTMLを表示する際には、METAタグ文字エンコーディング指定HTMLタグLANG属性があれば適切に動作するはずです(もちろん、文字エンコーディング指定が「正しい」指定であることが必要です)。しかし、一部のWebブラウザはこれらの指定を誤認して文字化けを起こす場合があります。HTMLが正しく記述されていても、Webブラウザの実装にバグがあって誤認されて文字化けが発生する場合があるのです。

 さらに、HTMLからPOSTする際にも文字化けを起こす可能性があります。ウェブブラウザが適切な文字コードでPOSTしたうえで、サーバプログラム側で文字コードを適切に処理できる必要があるからです(そして、それぞれに不具合が混入する可能性があります)。

フォントが異なることに起因する文字化け
〜Windows Vistaの問題点

 フォントが準拠する規格が異なるために文字化けが発生する場合があります。最近世間を騒がせたものとして、Windows VistaWindows XP以前との間で表示/印字される文字の形が変わるというニュースがありましたが、これは、Windows VistaのフォントがJIS X 0213:2004に対応したことによるものです。詳しくは、「Vistaのフォント違いによる文字化け」などをご覧ください。

文字化けを改善するためには?

 このように、私たちがプログラミングに従事していくうえで、文字化けが発生し得るポイントが数多くあります。そして、困ったことにそれらは複数が重なり合う場合があります。

 あなたがもし文字化けに遭遇してしまい、それを改善したいと思った場合には、まずどのようなことがどこで発生しているのかを調べることが重要だと考えます。文字化けの原因が分かれば、関連する規格や標準を調べてみることから状況改善につながる期待が持てます。

 ネットワークが関連する文字化けの場合には、ネットワークキャプチャプロトコルアナライザとも呼ばれる)などのツールを利用することによって発生している現象が把握できる場合があります(ただし、ネットワークキャプチャのようなツールは ネットワークによっては利用が制限されている場合もあります)。

 あなたがプログラミングしている個所での文字化けの解析には、この記事で紹介したような方法を活用してロギングを行うこともできます。実際の文字コードの値を収集することにより原因究明が進む場合があります。

 文字化けは、再現性があれば何かしらの原因究明ができると思います。場当たり的な対処をせず、内容をはっきり把握したうえで対応していきたいものです。

文字化けをより深く知るための参考書籍

 この記事では、文字コードの話題を扱ってきましたが、文字コード自体、難易度が高いうえに掲載ページ数の都合などで、どうしても説明が舌足らずなものになってしまいました。皆さんが文字コードについて掘り下げて学びたいと思ったときにオススメの参考書籍をいくつか紹介します。この記事執筆の際にも、これら書籍を参考にさせていただきました。

文字コードの基本

 まず、皆さんが文字コードを基本から学びたいという場合には、『文字コード超研究』を推奨します。分かりやすい文章で書かれたこの本を一通り読み進めることで、文字コードに関する基本を学習できるようになっています。

文字コードの歴史

 文字コードを理解するうえで、文字コードの歴史を知っておく必要が出てくる場合があります。歴史や経緯故に、その文字コードが使われている場合などが存在するからです。文字コードの歴史を知るうえで有益なのが、以下の2冊です。

文字コード処理に関する重要な書籍

 表紙の絵から「フグ本」の愛称で呼ばれる、文字コード処理に関する重要な書籍があります。それが、『CJKV日中韓越情報処理』です。日本語情報処理に関する情報をたどっていくと、この本に行き当たることが多々あります。また、この本はいくつかの国の言語に翻訳されているので、ほかの国の人と日本語情報処理に関する情報を共有していくうえでも、有益です。

筆者紹介

blanco Framework(コミッタ)

伊賀 敏樹(いが としき)
ハンドル:いがぴょん

1968年生まれ。現在、NTTデータ ビジネスブレインズ 第一SI事業部 ソリューショングループ所属。システム開発の技術支援などに従事する。仕事におけるJava言語とのかかわりは1998年から。 現在 blanco Frameworkというオープンソースによるソースコード自動生成タイプの開発フレームワーク提供に取り組んでいる。 趣味はヴァイオリン演奏。アマチュアオーケストラで演奏することもある。

ホームページ
いがぴょんの日記ウェブページv2(1996年から続けているWeb日記)

主な著書
やさしく学ぶ基礎からのJDBC
Javaプログラミング[アプリケーション編]ステップアップラーニング



前のページへ 1|2|3|4       

Copyright © ITmedia, Inc. All Rights Reserved.

RSSについて

アイティメディアIDについて

メールマガジン登録

@ITのメールマガジンは、 もちろん、すべて無料です。ぜひメールマガジンをご購読ください。