わたなべさん、レスありがとうございます。

WATANABE Hirofumi <eban / os.rim.or.jp> wrote:
> > UTF-16のテキストファイルをIconvで変換しようとしているのですが、
> > ダブルバイトのコロン(:)がテキスト中にあると、そのコロン以前
> > のテキストしか変換されず、後は無視されてしまいます。
> 
> :はUTF-16(LE)では\x1a\xffのように^Zを含んでいるからです。

あまりよくわかっていないのですが、^Zはファイル終了記号という
ことでしょうか。

> 入力をbinmodeしましょう。

はい。次のコードに変更して、ファイルをバイナリモードにしてみ
ました。ただ、今度はIconv::IllegalSequenceエラーが出てしまい
ます。

require 'iconv'

file = File.open('u16.txt', 'rb') {|file|
  puts Iconv.iconv('Shift_JIS', 'UTF-16', file.read)
}

実行:
.../test1.rb:4:in `iconv': "^\377\0020\r\000\n\000" (Iconv::IllegalSequence)

うーん、文字コードについてよくわかっていないのですが、これは
改行記号またはファイル終了記号に関する問題かとは思うのですが、
どうしたらよいかわかりません。

皆様、お知恵を拝借できますでしょうか。よろしくお願いいたします。

佐野剛史