On Sat, 17 Jan 2004 17:19:33 +0900
dune <FZH01112@...> さんwrote:
> 極悪です。
>
> perl(ActivePerl v5.8.2 build 808)付属の piconv で
> UTF-16LE のテキストを Shift-JIS に変換してみたのですが、
> うまくいきません。
>
> 一行だけのテキストなら OK なので、なんとなく要らないはず
> の BOM の処理がこけてるのかなと思うのですが(元テキスト
> には BOM はないが)。
>
> piconv の元ネタ? の iconv も改行の処理をミスっているの
> か 0x0D が余計につきます(入出力どちらかのテキスト/バイ
> ナリモードが変?)。
>
> 結局 tconv(http://www.piedey.co.jp/softs/tconv.html)
> しか期待どおり動いてません。
>
> 何か勘違いしてますか?
>
同じようなことのつもりでやっていたのですが、次のようになりました。
TeraPadのUnicodeモードで、
ほげ
ほげ
と書いて、data.uni.txtで保存してテストしました。
WindowsのUnicodeテキストはUTF-16のリトルエンディアンということですから、
おかしくないと思います。
C:\Scripts\dune>xd data.uni.txt
0: FF FE 7B 30 52 30 0D 00 0A 00 7B 30 52 30 0D 00
10: 0A 00
C:\Scripts\dune>iconv -f UTF-16 -t CP932 data.uni.txt
ほげ
ほげ
正常。
C:\Scripts\dune>iconv -f UTF-16LE -t CP932 data.uni.txt
iconv: data.uni.txt: cannot convert
当然。
C:\Scripts\dune>piconv -f UTF-16 -t CP932 data.uni.txt
UTF-16:Unrecognised BOM 7b at C:/Perl5.8/lib/Encode.pm line 184, <> line 2.
ほげ
おかしい。
C:\Scripts\dune>piconv -f UTF-16LE -t CP932 data.uni.txt
?到??
おかしい。
次に、バイナリエディタでBOMを削除して、
C:\Scripts\dune>xd data.uni
0: 7B 30 52 30 0D 00 0A 00 7B 30 52 30 0D 00 0A 00
C:\Scripts\dune>iconv -f UTF-16LE -t CP932 data.uni
ほげ
ほげ
C:\Scripts\dune>iconv -f UTF-16LE -t CP932 data.uni | xd
0: 82 D9 82 B0 0D 0D 0A 82 D9 82 B0 0D 0D 0A
で、特に問題なし。
C:\Scripts\dune>piconv -f UTF-16LE -t CP932 data.uni
?到??
C:\Scripts\dune>piconv -f UTF-16LE -t CP932 data.uni | xd
0: 82 D9 82 B0 0D 3F 93 9E 3F 3F
やはり、おかしい。
>
>
> D:% echo 1234 | xd
> 0000000 3231 3433 0d20 000a
> 0000007
>
> D:% xd data.uni
> 0000000 307b 3052 000d 000a 307b 3052 000d 000a
> 0000010
このデータはビッグエンディアン?
>
> D:% piconv -f UTF-16LE -t CP932 data.uni
> ?到??
> D:% piconv -f UTF-16LE -t CP932 data.uni | xd
> 0000000 d982 b082 3f0d 9e93 3f3f
> 000000a
>
> D:% iconv -f UTF-16LE -t CP932 data.uni
> ほげ
> ほげ
>
> D:% iconv -f UTF-16LE -t CP932 data.uni | xd
> 0000000 d982 b082 0d0d 820a 82d9 0db0 0a0d
> 000000e
>
> D:% tconv utf-16le x-sjis-cp932 data.uni
> ほげ
> ほげ
>
> D:% tconv utf-16le x-sjis-cp932 data.uni | xd
> 0000000 d982 b082 0a0d d982 b082 0a0d
> 000000c
>
> D:%
> --
> FZH01112 at nifty.com
> http://hpcgi1.nifty.com/dune/gwiki.pl?
>
藤岡 和夫
FGALTS@...
kazuf@...
TS Networkのために http://homepage1.nifty.com/kazuf/