Ruby UTF-8中的字节序列无效(ArgumentError)
我正在尝试运行Ruby脚本,但在这一行中总是出现错误:Ruby UTF-8中的字节序列无效(ArgumentError),ruby,utf-8,error-handling,Ruby,Utf 8,Error Handling,我正在尝试运行Ruby脚本,但在这一行中总是出现错误: file_content.gsub(/dr/i,'med') 我想用“医学”来代替“医生” 错误是: program.rb:4:in `gsub': invalid byte sequence in UTF-8 (ArgumentError) 为什么,我如何解决这个问题 我正在使用Ruby 2.2.1p85的MAC OS X Yosemite机器上工作。您的字符串可能不是UTF-8格式,所以请使用 if ! file_content.v
file_content.gsub(/dr/i,'med')
我想用“医学”来代替“医生”
错误是:
program.rb:4:in `gsub': invalid byte sequence in UTF-8 (ArgumentError)
为什么,我如何解决这个问题
我正在使用Ruby 2.2.1p85的MAC OS X Yosemite机器上工作。您的字符串可能不是UTF-8格式,所以请使用
if ! file_content.valid_encoding?
s = file_content.encode("UTF-16be", :invalid=>:replace, :replace=>"?").encode('UTF-8')
s.gsub(/dr/i,'med')
end
请参阅“”谢谢您的回复。如何使用您提供的代码段?因为当我在程序中立即使用它时,我得到main:Object的:未定义的局部变量或方法“s”(NameError)。感谢使用
file\u content
而不是s
在我的问题中显示的行之前,我有下面一行代码:“file\u content=IO.read(filename)”。我已经把你的代码放在这一行之后,在我的问题的这一行之前,实际上仍然有相同的代码problem@Simplicity您使用的是Ruby 2.2,因此可以直接使用该方法。对于没有scrub
的旧版本,此技术实际上是一种变通方法。(但实际上,您应该计算出编码的实际内容并正确地转换它,否则您将丢失数据)。对我来说,这从变量名中保存了我,看起来您正在从文件中读取数据,对吗?文件来自哪里?您是如何阅读的?你知道这个文件的实际编码吗?