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 に到達するまでプログラムはエラーになりません。そのため、照合される入力データが何十万行もある場合、文字列の文字パターンがどのように問題になるのか混乱しています。何事もなくパターン。