〜‖−¢£¬ と libiconv と cp932
CP932 と UNICODE の相互変換した時に「〜‖−¢£¬」が期待通り*1 に変換してくれるかどうかを調査してみました。
以下のシステムはでは期待通りに変換してくれます:
- eglibc 2.10.1 (ubuntu 9.10)
- glibc 2.7 (ubuntu 8.04 japanese)
- Perl 5.10.0 (osx 10.6.2)
- Perl 5.8.9 (macports 1.8.2)
- Python 2.6.1 (osx 10.6.2)
- Python 2.6.4 (macports 1.8.2)
- Ruby 1.9.1 (macports 1.8.2) (2/2追記)
- Java 1.6.0_17 (osx 10.6.2) (2/2追記 CP932 ではなく MS932 を使用)
少なくとも以下のシステムの libiconv は期待と異なる変換になります:
次のようなコードを書いて調査しました:
- http://dl.dropbox.com/u/1340991/test_cp932/test_cp932.cpp
- http://dl.dropbox.com/u/1340991/test_cp932/test_cp932.pl
- http://dl.dropbox.com/u/1340991/test_cp932/test_cp932.py
- http://dl.dropbox.com/u/1340991/test_cp932/test_cp932.rb (2/2追記)
- http://dl.dropbox.com/u/1340991/test_cp932/test_cp932.java (2/2追記)
iconv の CP932 がマトモに使えるようになると思われるパッチ: