2011年2月 8日

[ruby-list:47848] Re: ruby1.9での文字列について

ただただしです。

2011/2/8 Nobuyuki Inaba <nobuyuki.inaba@xxxxx>:
> 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


投稿者 xml-rpc : 2011年2月 8日 19:27
役に立ちました?:
過去のフィードバック 平均:(0) 総合:(0) 投票回数:(0)
本記事へのTrackback: http://hoop.euqset.org/blog/mt-tb2006.cgi/101868
トラックバック
コメント
コメントする




画像の中に見える文字を入力してください。