「波ダッシュ」とnkf

文字コードの話。まず、ざっくり、CP932Shift_JISを拡張したもの。

なので、大半は同じ。まずはこれが今回の話のベース、というか、問題というか。

文字コードには沢山の種類があり、変換するにはnkfが便利。入力された文字コードを自動判別してくれるので。とは言え、残念ながら完璧ではない(完璧にはできない、というべきか)。

テスト用の入力ファイル。

UTF-8の環境のLinux上で作成したもの。これをCP932に変換し、nkfで文字コード判定してみる。

CP932ではなく、Shift_JISと判定されてしまう。

そのため、これをUTF-8に変換して、Windows上のTeraPadで開くと2行目の「~」が文字化けしてしまう。

入力文字コードを明示すれば、もちろん、上手くいく。

いわゆる「波ダッシュ問題」。

Pz-LinkCard
- URLの記述に誤りがあります。
- URL=http://x0213.org/wiki/wiki.cgi?page=%C7%C8%A5%C0%A5%C3%A5%B7%A5%E5%CC%E4%C2%EA

試しに、一番最初の文字をCP932にしかない文字にしてみる(ここでは丸数字)。

これだとCP932と判定してくれる。ならば大丈夫かと思いきや…

残念ながら、化けてしまった。やはり、入力文字コードを明示しなきゃダメなようだ。

まぁ、仮にこれが上手く行ったとしても、最初の文字がCP932固有のものであるなんてのは極めてレアケースであり、期待するのは無理。

さて、困った。nkfでは入力コードの自動判定が行えて便利ではあるが、CP932の可能性があるなら事前に判定する必要がありそう。また、Shift_JISと判定されても、CP932と見なした方が無難かもしれない。今、純粋な (?)Shift_JISの環境ってあるのかな?


nkfを通すと、どういうわけか全角のマイナス(ハイフン?)が文字化けする。文字コード変換をしなくても化ける。 実験用に用意したのは「...