エンコード問題について
さて、冒頭に書いた「iconvによるエンコード問題」ですが、とりあえず全てに該当した方は、config.txtのclient_encodingの設定を、以下のように変更してください。
client_encoding:CP932
この問題は、Microsoftでサポートしていると言われている文字コード「シフトJIS」が、実際には「Codepage932」という別の文字コードセットである、ということに起因しています。
詳しいことは省きますが、今回開発中にぶち当たった問題は、前回の日記でサンプルとして挙げた例そのものでした。自分の本家サイト、「http://www.glass-moon.jp/」を EUC-JP から Shift_JIS へ変換しようとしたら IllegalSequence 例外飛ばしやがんの。ほんとにそのまんま。もう泣きたい…。
つまり、iconv は EUC-JP→UCS2→Shift_JIS という、内部コードにUCS2を用いた変換を行っているんだけど、ここで EUC-JP から UCS2へ マップしたコードが Shift_JIS での変換時に変換テーブルにないコードなので「変換でき〜ん!」とiconvに怒られてしまうわけです。あ〜あ…。
なので、Windows で Shift_JIS でツールを使っている人は CP932 と設定するようにしましょう、というか、してくださいお願い(泣)