テキストファイルの標準エンコーディングは?


テキストファイルのエンコーディングとして何を基本とすべきかというのは悩ましい。


日本語のみならutf-16で幸せになれるのかと思ったら、JIS2004で追加された907字のうち304文字がサロゲートペアであって、2バイトで表現できない。


どうせ16bitで表現しきれないのなら、utf-32は保存領域がもったいない感があるので仕方ないのでutf-8を選択する。


utf-8だと相手に解釈してもらうためには、BOMをつけるほうが好ましい。


そこで、秀丸で標準保存形式としてutf-8(BOMつき)を設定しておく。
秀丸の拡張子関連づけで、".txt"を秀丸と関連づけておく。


よし、これでテキストファイルを新規作成して、秀丸で開くと…。


utf-8(BOMなし)と解釈される。一体どうなっているのか。


Windowsではエクスプローラーからファイルを新規作成するときにテンプレートを設定しておくことが出来る。しかしこのテンプレートが設定されていなければ、空のファイル(0 バイトのファイル)が生成される。つまり、空のテキストファイルが生成される。これを秀丸で開くと、utf-8(BOMなし)と解釈される。


おかしいじゃないか…。秀丸で拡張子関連づけして、秀丸の標準保存形式をutf-8(BOMつき)に設定しているのだから、秀丸が".txt"に対するテンプレートとしてutf-8(BOMつき)を設定しておくのが当然ではないのか。


どうも他のテキストエディタでも事情は同じようで、この問題がある。


エクスプローラーでテキストファイルを新規作成すると、ゼロバイトのファイルが作成される。これをカスタマイズするのは容易で(あまり知られていないかも知れないが)、新規作成のときにどのファイルがコピーされて欲しいかをレジストリに書いておき、そのファイルをWindows\ShellNew\フォルダに配置すれば良い。エクスプローラーでの新規作成のときには、そのファイルがコピーされる。


エクスプローラの[新規作成]メニューをカスタマイズする
http://www.atmarkit.co.jp/fwin2k/win2ktips/282filenew/filenew.html


さて、このようにしてめでたくutf-8(BOMつき)を標準エンコーディングとして使えるようになるのだが、それは自分の環境だけの話であって、相手から送られてきたファイルはutf-8(BOMつき)になっていない。いまだにSJISでテキストを書いてくる人も多く、utf-8を使う人でも上のような理由でutf-8(BOMなし)であることもある。


そして先日はこんな問題にぶち当たった。



https://twitter.com/yaneuraoh/status/337221106798821379


客先でU+200Bという幅無しスペース文字をファイル名に使っている人がいたのである。この文字、zip書庫では使えない文字らしく、書庫を作るのに失敗して、バックアッププロセスが停止していた。私はこの原因を特定するのに1時間ぐらいかかった。


おそらくこの文字は紙媒体からスキャンしてOCRをかけたpdfファイルなどからコピペしたときに拾ってきたのだろう。しかし、何故この文字がzip書庫で使えないのかという疑問もある。


秀丸なんかで開くと、この文字は、編集テキストをutf-8エンコーディングにしている場合、半角スペースとして表示される。SJISエンコーディングにしている場合、"?"の文字になる。(SJISで使えない文字だから)


ところが、Windows標準のメモ帳は優秀(?)で、この文字を本当に幅無しスペースとして表示してしまう。そこにあるのかないのかすらわかりゃしない。こりゃ、コピペしたときに紛れてしまうわ…。


結局、このようなコントロールコードに似た特殊文字がutfで使える以上、テキストエディタには、WordのようにWYSIWYGモード(≒印刷レイアウトモード)と編集用モードとの二つが必要だということになる。それが用意されていないメモ帳の実装に問題があるように思う。


秀丸等のテキストエディタの実装にも問題はあるが、これらのエディタは普通はWYSIWYGではないので、上のような特殊文字列によって意図しない編集結果になってしまうということはない。


それにしても私は、こういうしょーもないコンピューター特有の問題により、トータルで何千時間ロスしているかわからない。Windowsだから悪いという問題ばかりでもないのだが、しかし自分だけ解決すれば済むという性質の問題ばかりでもなく(自分がBOMつきutf-8を使うと勝手に決めてもお客さんはSJISでテキストを書いてくるわけで…)、なかなか悩ましい。


例えば、萩谷昌己先生は次のようなエッセイを書いている。
(1995年ごろの「インターフェース」か「bit」誌かだと思う。)



引用元 : http://nicosia.is.s.u-tokyo.ac.jp/pub/essay/hagiya/h/tensai


「使い難い処理系がどれほど世の中の人的なリソースを無駄にするかということが、丸で分かっていないのである。将来、TeXは、現在のFORTRANのような存在になって、世の中に害毒を流し続けるであろう。」


いまや、この“TeX”の部分を“Windows”に置き換えても良さそうだ。


世間から天才と呼ばれるような頭のいい人たちがコンピューターのつまらない問題に巻き込まれて時間を大量に損失してしまわない社会が来ることを私は願ってやまない。