Ubuntu 11.10上のiconvによるucs2変換のエンディアン
Ubuntu 11.10上で動くiconvなのであるが・・・・
$ iconv -V iconv (Ubuntu EGLIBC 2.13-20ubuntu5.1) 2.13 Copyright (C) 2011 Free Software Foundation, Inc. This is free software; see the source for copying conditions. There is NO warranty; not even for MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. 作者 Ulrich Drepper。
の挙動を観察してみると・・・
UTF-8からUCS-2beへのコード変換。
$ echo "Hello, Ubuntu World\!" |iconv -f utf-8 -t UCS-2be |od -x 0000000 4800 6500 6c00 6c00 6f00 2c00 2000 5500 0000020 6200 7500 6e00 7400 7500 2000 5700 6f00 0000040 7200 6c00 6400 5c00 2100 0a00 0000054
UTF-8からUCS-2leへのコード変換。
$ echo "Hello, Ubuntu World\!" |iconv -f utf-8 -t UCS-2le |od -x 0000000 0048 0065 006c 006c 006f 002c 0020 0055 0000020 0062 0075 006e 0074 0075 0020 0057 006f 0000040 0072 006c 0064 005c 0021 000a 0000054
とか-tで指定したleとかbeと、変換結果のエンディアンを観察した結果の意味合いが逆になっているような気がする。謎だ。