From: "5.5" <5.5@...> Date: 2011-09-29T12:48:00+09:00 Subject: [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@moji.gr.jp