2011年9月29日

[ruby-list:48425] Re: Ruby 1.9 で Shift JIS の YAML

信岡さん

5.5 です。ご教示ありがとうございます。

(11/09/27 10:15), Y. Nobuoka wrote:
> Ruby 1.9 では、UTF-8 としてパースしているというよりも、
> Ruby 1.8 と同じく文字エンコーディングを気にせずにパースして、
> 結果の文字列のエンコーディングを問答無用で UTF-8 に指定しているように思います。


あー,なるほど!

> しかしながら、Shift_JIS (または CP932) では、特定の文字の 2 バイト目が
> バックスラッシュのバイト値と同じになりますので、例えば以下のような場合に
> エラーが発生してしまいます。 (これは Ruby 1.8 でも 1.9 でも同様です。)
(中略)
> text = '[ "噂" ]' # CP932 の '噂' の 2 バイト目はバックスラッシュと同じバイト値
> str = YAML.load(text).first # エラー発生

ほんとですね。

いままで Ruby 1.8 でまったく問題なく使えてきたのは,ある意味
偶然だったのですね。
テキスト中に,2バイト目が 0x5C になる文字を含む YAML データ
はあったのですが,["噂"] のようにパースエラーに結びつくケース
がたまたま無かったということですね。

--
5.5@xxxxx


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




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