「文字コード技術入門」制作で直面した文字コード問題

本書 (「プログラマのための文字コード技術入門」)の原稿はコンピュータ上でテキストエディタを使って書いています。そうすると、文字コード値の羅列として文を表現することになります。

本書には、「ト゚」や「か゚」のようにUnicodeで合成の必要な文字や「𩸽」のようなBMP外の符号位置にある文字、あるいは「海」のようにUnicodeの正規化処理で別の符号位置に置き換わってしまう文字などがふんだんに盛り込まれています。

このため、本書の執筆・編集において、まさに文字コードの問題に直面することになりました。

私が執筆に使っているのはEmacs 22です。このエディタでは、テキストをEUC-JIS-2004 (Emacsのcoding system名としてはeuc-jisx0213)として保存している分にはいいのですが、UTF-8として保存しようとすると、「か゚」のように結合文字を使う文字については正しく保存されません。これが最初に直面した問題でした。この問題には、執筆中はずっとEUC-JIS-2004で保存しておいて、出版社に渡すときにiconvでUTF-8に変換するという対処法をとりました。これなら結合文字の必要な字が壊れません。

出版社に送ったら送ったで、出版社の機械で正しく表示・編集できているかが気になります。問題のありそうな箇所がきちんと扱えているか、いちいち確かめる必要がありました。

まず、UTF-16でサロゲートペアを必要とするBMP外の文字については、目立った問題はなかったようです。サロゲートというのはUnicodeの面倒な点としてよく話題にはなるものの、さほど困難でない種類の問題だと思います。

次に、結合文字を必要とする文字です。これは、編集者の手持ちのソフトウェアでいろいろと問題になるものがあったようです。本書第3章の図3.33に掲げた表示の失敗例には、編集者に教えてもらったものがあります。ただ、さすがに組版用のソフトウェアではきちんと扱えています。

また、Unicodeの正規化で置き換わってしまう互換漢字についても、編集者の手持ちのソフトウェアで問題のあるものがあったようです。確認のために「これでいいですか」といって送られてきたデータを見たら、ものの見事に互換漢字が統合漢字に置き換わってしまっていてびっくりしました。問題を編集者に伝えたら、何か対処をしたのかどうか定かでありませんが、その後は正規化の問題はなくなったようです。

こうした問題があるので、Unicodeだからうまくいくはずと予断することはできず、組版のソフトウェアで印刷するまでうまくいくかどうか、注意深く確かめながら進めることになりました。編集者には他の技術書にない手間をかけさせてしまい、申し訳なく思います。

このエピソードは、UTF-8に統一したら文字コードの問題は無くなると思っていた人には悪いニュースかもしれません。UnicodeにはUnicodeで、いろいろな問題があるのです。

Unicodeのこれらの問題を気にせずに、自由に文字を交換できるようになる日がくることを願ってやみません。


[「プログラマのための文字コード技術入門」紹介ページへ]

2010年3月6日 公開

最近のブログ記事

Jアラート訓練メールで文字化けとのニュース
一昨日のことですが、中国・四国地方から文…
任俠の第3水準漢字
ユーモラス、と言っていいのか分かりません…
ふるさと納税で奥尻島のワインを頂きました
奥尻島は北海道の南西の方に浮かぶ島です。…
電子マネーの優先順位を考える
このブログを電子マネーとクレジットカード…
電子マネーiDの隠れたお得
iDというのはSuicaやEdyのような…

広告