From: TADA Tadashi Date: 2011-02-08T19:27:44+09:00 Subject: [ruby-list:47848] Re: ruby1.9での文字列について ただただしです。 2011/2/8 Nobuyuki Inaba : > 1.8では、OKだったのですが、1.9では、 > UTF-8 の文字列と、ISO-2022-JPの混在が > Encoding::CompatibilityError: incompatible character encodings: UTF-8 > and ISO-2022-JP > と表示されます。 > それはわかるのですが、わざと混在させたいのですが、どうにかエラーが出ない様にできないでしょうか? > できれば助かるのですが。 稲葉さんのおっしゃる「混在」の意味を定義しないと適切な 回答ができないと思います。 同一プログラム中に、複数の異なるエンコーディングを持つ 文字列を持つこと(混在)は普通に可能ですよね: s1 = "あいう".encode 'ISO-2022-JP' s2 = "あいう".encode 'UTF-8' いっぽう、同一文字列中に異なるエンコーディングの部分文字 列を持たせること(これも混在)はできません: s1 + s2 # => Encoding::CompatibilityError: incompatible character encodings この場合はASCII-8BITにでも強制的に合わせてやれば、バイナ リなビット列として扱えるでしょう: s1.force_encoding('ASCII-8BIT') + s2.force_encoding('ASCII-8BIT') もちろんこの場合はもはや文字列としての操作は諦めるしかあ りませんが。 -- ただただし - ツッコミは、短く鋭く愛を込めて♪ http://tdtds.jp/ @tdtds