From: Tanaka Akira Date: 2008-12-26T13:13:29+09:00 Subject: [ruby-dev:37603] Re: [BUG:trunk] [m17n] TestCSVFeatures fails because of r20905 In article <4953CC9F.7070603@airemix.jp>, "NARUSE, Yui" writes: > 直感的には String#encode("ASCII-8BIT") は、 > String#force_encode("ASCII-8BIT") と同じ効果になるべきに感じます。 あまり直感的に思えません。encode は文字を保存するようにバイ ト列を変換するはずなのに、そうなっていません。 CSV#inspect をみると、ASCII 互換の encoding にしたい、という 意図を感るんですが、違うんでしょうか。UTF-16 が来たときの対 策というか。 UTF-16 を考えると、force_encoding にすると、中身が文字として ASCII の範囲内でも \0 がひとつおきに入って嬉しくないんじゃな いでしょうか。 UTF-16 についての議論がどうなったかちゃんと覚えてないんです が、もし UTF-16 は扱わないでもいいという話だったら、単純に .encode("ASCII-8BIT") を消してしまうというのはどうでしょうか。 また、UTF-16 を扱うのであれば、UTF-16 に対応する ASCII 互換 な encoding に変換するということで、 e = Encoding::Converter.asciicompat_encoding(s.encoding) e ? s.encode(e) : s.force_encoding("ASCII-8BIT") とかはどうでしょう。 -- [田中 哲][たなか あきら][Tanaka Akira]