文字コードは誰を不幸にするのか(1)

視力も落ちてきて、小さいフォントだと windows のパスを読み取るのも億劫になってきた。
なにが見づらいって パス区切り文字の「円記号」だ。
英語圏のフォントなら、パス区切り文字はバックスラッシュだから Unix 系と似た感じでこれはこれで見やすいからいい。

なんで日本のフォントではパス区切りが「円記号」になるのか。
Wikipedia によれば、これは実にしょうもない問題だった。

簡単に言えば、英語圏で使っている文字コードの バックスラッシュがおかれている番地に、日本の文字コードでは「円記号」を割り付けてしまったことによる。
当初「ここらへんの番地は各国で自由に割付けていい」*1と決められていたので、日本の文字コードを決めた偉い人は安心してこの番地(具体的には 0x5C )に「円記号」を割り付けた。

その後、MicrosoftDOS を発表したが、このときパス区切り文字として採用されたのがバックスラッシュだった*2DOSを日本に持ってきて、日本の文字コードのフォントで表示させると区切り文字は「円マーク」になった。

その後 MicrosoftWindows を発表したが、パス区切り文字は DOS のバックスラッシュをそのまま引き継いだ。もし Windows が失敗していればこんな些細な問題は歴史に埋もれていったんだろうが、あろうことか爆発的に普及してしまったせいで問題となっている。

これが経緯だと思う。
たぶん、0x5C に「円記号」を割り付けた人に罪はないんだろう。約束を破られた被害者だし。
じゃあ Microsoft が悪いのか。確かに「国によって違う文字が表示される」ような文字をパス区切り文字に使おうとしたのはどうかと思う。しかし、時は1980年代初頭、自分が売るOSが世界的に普及したときのことを考えろってのは、さすがに無理がある。それに似たようなことは Microsoft 以外にも起きているから、一人悪者にするのもどうか。

たとえば、プログラムを書いているとき改行文字はどう書くのか。
\n とかで表す言語が多いよなあ。
FORTRAN は違うみたいだけど、LISP は最初から \n だったのかな。

たとえば、正規表現はどうか。
sed は、すでにバックスラッシュを使ってた様子。
ed でもそうなんだろうか。

そもそも誰が最初に、バックスラッシュをエスケープ文字に選んだのか。

まあ今となっては誰でもいいんですよ。
でもね、Unicode が浸透してずいぶん経つのに、なんで旧来の文字コードの暗い過去を引きずっているのか、それが納得いかんだけなんです。時々ね。

*1:これは、「各国で自由に割付けていい」=「国によって違う文字が表示される」だ。

*2:参考 http://www.seasip.demon.co.uk/Cpm/optchar.html