touch/Macのユーザーが表示すると、一部の文字が化けてしまうことがある。これらのプラットフォームの間で、文字コードにおける文字と番号の割り当てが一部異なるのが原因の1つである。した文字は別の文字で代替して表現するなどして、使わない方が安全だ。それも、全文が読めないのではなく、一部の文字だけが判読できないというパターンだ。Liveメールで作成・送信したメールを、iPhone標準のメーラで受信・表示したものだ。Liveメールで作成・送信したメール■iPhoneの標準メーラで受信・表示したメールWindowsからiPhoneへ送ったテキストで文字化けが生じた例Windowsからは数字のテキストを送ったにもかかわらず、iPhoneでは曜日の漢字が表示されていることが分かる。Liveメールでは、白い丸で囲った数字(丸数字)が並んでいる。iPhoneの標準メーラでは、数字ではなく「(日)」「(月)」のように括弧でくくられた曜日の漢字に変わってしまっている。このように、Windowsでは数字を記したはずだったのに、iPhoneでは曜日が表示されてしまった。これだと、送信者は優先順位を指定したつもりだったのに、受信者は日程を指定されたものと勘違いしかねない。このように作成・送信側と受信側との間で、一部の文字だけが明らかに異なる文字として表示されてしまう現象は、メールに限ったことではなく、Webページや、プレーン・テキストのファイルの受け渡しでも発生することがある。特定の文字が必ず化けるとは限らず、文字の組み合わせや送信側/受信側のプラットフォーム、アプリケーションなどによって、化けたり化けなかったりする。X)へテキスト・データを送る際に、こうした一部の文字が化ける現象の原因を探り、その方策を考えてみる。丸で囲った数字がカッコ付き曜日に化けるのか?コンピュータの内部において、文字は「文字コード」と呼ばれる数値(番号)で取り扱われている。「あ」は0x82A0」、「い」は0x82A1といった具合に、各文字には固有の番号が割り当てられており(これはシフトJISコードの例)、ソフトウェアからはこの番号を指定することで対象の文字を処理できる。この文字コードは1種類ではなく、シフトJISやJISコード、EUC、Unicodeなどなど複数の方式がある。文字コードの詳細についてはTIPS「メールの文字コードを理解する」が参考になる。Xも、シフトJISやJISコード、Unicodeといった文字コードを取り扱うことができる。シフトJISやJISコードにおける文字とコード番号の割り当ては、両プラットフォーム間でまったく共通というわけではなく、一部に食い違いがある。前述の丸で囲った数字とカッコでくくられた曜日は、その代表例で、次の表のように同じ番号に対してまったく異なる文字が割り当てられている。Xにおける文字とコード番号の割り当てが異なる例これは前述のメールで文字化けが生じた文字の例。このほかにも、一方のプラットフォームでは文字が割り当てられていないコード番号に対し、他方では特定の文字が割り当てられているということもある。このような文字をテキスト・データに含めてしまうと、受け取った側では文字のエンコードに失敗してエラーが発生し、テキスト・データ全体が表示できなくなることもある。Xの間でコード番号の割り当てが異なる文字は、文字コード全体からすればわずかである。Xで文字化けする可能性のある文字を以下にピックアップしてみた。10.5(右)で表示した例。Windows側で未定義の文字は省いている。Xで「・」となっているのは、未定義のため表示できなかった文字である。これはあくまでも一例であり、プラットフォームやアプリケーションなどによって文字が化けなかったり、別の文字で表示されたりすることもある。※学術記号の「Σ」は数式で総和を表す記号で、ギリシャ文字の「シグマ」とは違う文字。Xでは正しく表示されないことが分かる。XやiOSでもこうした文字は定義されており、表示もできる。そのコード番号がWindowsとは異なるため、上記の例では表示されないということだ。Xで表示できない場合がある(シフトJISの0xED41〜0xED6F、0xFA8D〜0xFAFCなどに割り当てられた漢字)。いずれも普段目にすることが少ない特殊な漢字ばかりのようだ。前述のような文字化けを防ぐ方法のうち、最も手軽なのは、化けてしまう可能性のある文字は使わず、別の文字で代替することだ。丸で囲われた文字は、例えば「(1)」「(2)」のように複数の文字を組み合わせて表現する。ローマ数字はアルファベットの「I」「V」「X」を組み合わせれば代替できる。「ミリ」「キロ」などの単位記号は全角カタカナで表せるし、元号や省略形も同様に複数の文字を組み合わせれば表現できる。くくりの記号は別の記号で代替できるだろう。テキストを扱うアプリケーションには、文字化けが生じる可能性のある文字を入力すると、自動的に色を変えるなどしてユーザーに知らせてくれるものもある。した機能を利用すれば、文字化けする文字の入力を防ぐことも可能だ。Mailというメーラで、メールを送信しようとしているところ。文字化けする可能性のある、丸で囲われた数字がピンク色で表示されている。これは、現在の文字コード(iso-2022-jp)では文字化けが生じる可能性があることを表している。代替できない文字を使いたい場合や、どの文字が化けてしまうか分からない場合は、Unicodeでテキスト・データを作成し、添付ファイルとして送信するという手もある。X間で文字化けなしでテキスト・データを交換できる。欠点はUnicodeに対応していないアプリケーションがまだ多いことで、例えばUnicode非対応のメーラでUnicodeテキストの本文を受信すると、一部どころかメール本文すべてが化けてしまってまったく読めなくなってしまう。受信者がUnicodeテキストを確実に取り扱えると確認できない場合は、むやみにUnicodeでテキストをエンコードして送らない方が無難だ。より自動抽出したものです。【2011/02/22】公開当初、「Macintosh」と表記していていましたが、現在の呼称にあわせて「Mac」に変更しました。(2017/7/21)キーボード配列が異なる言語に誤認識された場合の対処方法を紹介。