2010-02-01
〜‖−¢£¬ と 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 がマトモに使えるようになると思われるパッチ:
2010-01-29
allocatorが異なるstring
typedef std::basic_string<wchar_t, std::char_traits<wchar_t>, my_allocator<wchar_t> > my_wstring; std::wstring str1; my_wstring str2; str1 == str2; // error str1 < str2; // error str1 = str2; // error
うーん、不便。allocator が異なる場合でもこれらの関数は問題なく実装できると思うのですけれど。
2010-01-27
OSX 流儀の IME オンオフ
最近 OSX に慣れてしまったので、Windows での IME のオンオフの流儀に違和感を覚えるようになってきてしまいました。
というわけで、そんな時に役に立つのが yamy や nodoka です。
keymap Global if ( KBD109 ) key *無変換 = &Ignore # 無変換を IME オフに key IL-*無変換 = $ToggleIME # 〃 key IC-C-K = F7 # IME で変換中の C-K は F7 key *変換 = &Ignore # 変換を IME オンに key ~IL-*変換 = $ToggleIME # 〃 if ( YAMY ) key *E0無変換 = &Ignore # 無変換を IME オフに key IL-*E0無変換 = $ToggleIME # 〃 endif endif
yamy の場合は、-DYAMY しておく必要があります。
