0

Ruby 1.8 から Ruby 2.0.0-p247 にアップグレードしようとしている Ruby プログラムがあります。

これは 1.8.7 で問題なく動作します。

 begin
   ARGF.each do |line|
     # a collection of pecluliarlities, appended as they appear in data
     line.gsub!("\x92", "'")
     line.gsub!("\x96", "-")
     puts line
   end
 rescue => e
   $stderr << "exception on line #{$.}:\n"
   $stderr << "#{e.message}:\n"
   $stderr << @line
 end

しかし、Ruby 2.0 では、データ ファイルにエンコードされた 96 または 92 に遭遇すると、これは例外になります。

 invalid byte sequence in UTF-8

二重のバックスラッシュ、文字列の代わりに正規表現オブジェクトを使用する、force_encoding() など、あらゆる方法を試しましたが、困惑しています。

欠けているパズルのピースを埋めてくれる人はいますか?

ありがとう。

=============== 追加: 2013-09-25 ============

\x92 を \u2019 に変更しても問題は解決しませんでした。

入力ファイルで実際に 92 または 96 に到達するまでプログラムはエラーになりません。そのため、照合される入力データが何十万行もある場合、文字列の文字パターンがどのように問題になるのか混乱しています。何事もなくパターン。

4

1 に答える 1