0

我有一个 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 时,这会导致此异常,否则该文件包含似乎是 ASCII 的内容:

 invalid byte sequence in UTF-8

我尝试了各种方法:双反斜杠、使用正则表达式对象而不是字符串、force_encoding() 等,我被难住了。

任何人都可以为我填补缺失的拼图吗?

谢谢。

=============== 补充:2013-09-25 ============

将 \x92 更改为 \u2019 并不能解决问题。

程序在输入文件中实际达到 92 或 96 之前不会出错,所以当有数十万行匹配的输入数据时,我很困惑字符串中的字符模式是如何出现的问题没有事件的模式。

4

1 回答 1

3
于 2013-09-24T00:51:06.003 回答