【发布时间】:2013-09-29 00:47:26
【问题描述】:
我有一个 ruby 程序,我正在尝试从 ruby 1.8 升级到 ruby 2.0.0-p247。
这在 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 之前不会出错,所以当有数十万行输入数据与模式匹配而不会发生意外。
【问题讨论】: