[鶏小屋の入口へ] [種々雑多な話の一覧へ]

Wrote 2002/11/27

文字化けの話を少し


京介:「先日、鶏小屋の一部のページで環境によって文字化けが発生していたようで、ご迷惑をおかけしました」
神崎:「実は今も問題は残ってるんだ。筆者が面倒臭がって直してないだけで」
京介:「あれ? そうなの?」
神崎:「筆者が使っている自作文字変換ツール“Cochin”の仕様に問題があるんだ。ローマ字部分を基本的に JIS X 0201 Roman で符号化してしまう」
京介:「…………は?」
神崎:「順を追って話そうか。基本的に鶏小屋本舎にある文書はいわゆる JISコード、つまり ISO-2022-JP で 書かれている。SJIS や EUC-JP を使うより文字化けへの耐性が高いと思っているからだ。この辺りの話は省略するが」
曽根:「SJIS でいいじゃねぇか、面倒臭い」
神崎:「茶々を入れるな(苦笑)。で、ISO-2022-JP は早い話がローマ字モード(半角)と漢字モード(全角)を切り替える仕組みなんだが、このローマ字モードが実は2種類あるんだ。Cochin を作った当時筆者は知らなかったんだが」
曽根:「US-ASCII と JIS X 0201 Roman だろ? 普通は US-ASCII 使ってるわな」
沢っち:「ん? どう違うの?」
神崎:「2つだけ文字が違う。一つは有名な円記号(¥)。US-ASCII ではバックスラッシュ(\)なんだが、JIS X 0201 Roman では円記号に置き換わっている。もう一つはチルダ(〜)。こちらは US-ASCII の方がチルダを用いていて、JIS X 0201 Roman ではオーバーライン( ̄)に置き換わっている。後は基本的に同じだ」
沢っち:「……半角の“\”も“ ̄”も、見たことないんだけど」
神崎:「無理もない。コード表の上ではさっき言った通りになっているんだが、Windows なら大抵の場合沢っちが言った通り“\”は“¥”に、“ ̄”は“〜”で表示されるはずだ。US-ASCII でも JIS X 0201 Roman でもね。Macintosh もそうだったかな?」
曽根:「Unix系なら“\”はそのまま出る事の方が多いはずだぜ。逆に“¥”はめったに見ねぇし」
神崎:「今回のケースでは Cochin の代りに別のツールを使って変換したんだが、基本は JIS X 0201 Roman で符号化していて、改行コードなど一部だけ US-ASCII に戻すという妙な事をしていた。どうもそれが一部のブラウザでひっかかったらしい。この事はErnestさんから教えて頂いた。ここでお礼を言っておきます」
京介:「Cochin だと出ないんだ?」
神崎:「Cochin は何も考えずに改行コードも JIS X 0201 Roman のままで符号化してたのが逆に幸いしたらしい」
曽根:「でよ、はじめに言ってた『今も残ってる問題』ってのは?」
神崎:「Opera を使っている方は、上の Ernest さんのサイトへのリンクをクリックしてみてほしい。それでわかる」
曽根:「ん? ……はあ? なんだ、ページが表示されねぇぞ?」
京介:「こっちはちゃんと表示されるよ?」
神崎:「URIにある“〜”を律儀にオーバーライン( ̄)として認識しているんだよ。ためしに“〜”を %7E と書いてみると問題なく表示される」
曽根:「あ! そういう事か(苦笑)」
神崎:「これについては色々書きたい事があるんだが、また今度かな」
曽根:「つーか、さっさと Cochin 直せよ(苦笑)。バグも残ってんだから」


[鶏小屋の入口へ] [種々雑多な話の一覧へ]