【问题标题】:Ruby invalid multibyte char error (Sep 2019)Ruby 无效的多字节字符错误(2019 年 9 月)
【发布时间】:2019-09-06 21:35:58
【问题描述】:

我的脚本在这种错误的编码上失败了,即使我将所有文件都转换为 UTF-8,但仍然有一些不会转换或只是里面有错误的字符。

实际上在 var 分配步骤中失败了。

我可以为这种情况设置某种错误处理,如下所示,以便我的循环继续。 ¿ 会导致所有问题。

需要一直运行此脚本而不会出错。已经尝试过encodingforce_encoding 和shebang 线。 Ruby 是否有任何类型的错误处理路由,以便我可以处理该坏情况并继续执行其余脚本?如何摆脱这个错误invalid multibyte char (UTF-8)

line = '¿USE [Alpha]'
lineOK = ' USE [Alpha]  OK line'


>ruby ReadFile_Test.rb
ReadFile_Test.rb:15: invalid multibyte char (UTF-8)

【问题讨论】:

  • 运行您的代码不会向我显示任何错误。另外,我不清楚您要归档什么...
  • 您是否尝试过强制编码为 UTF-8,例如line.force_encoding(Encoding::UTF_8)
  • 另一种选择可能是转换为二进制,然后转换为 ascii,用有意义的字符或空格替换无效字符,甚至 `force_encoding('BINARY').encode('ASCII', :invalid => :替换, :undef => :replace, :replace => ' ')
  • @Christian,你如何管理运行它OK)在什么版本上,有什么诀窍?我在 Windows 上。还有其他人像我一样遇到错误吗?发送

标签: ruby


【解决方案1】:

我可以通过使用 ISO-8859-1 编码保存文件来重现您的问题。

使用这种非 UTF8 编码的文件运行代码时会弹出错误。我的解决方案是将文件保存为 UTF-8。

我使用 Sublime 作为文本编辑器,并且有选项“文件 > 使用编码保存”。我选择了“UTF-8”并且能够运行该脚本。

然后使用 puts line.encoding 向我展示了 UTF-8 并且不再出现错误。

我建议再次检查您保存的脚本文件的编码。

【讨论】:

  • 感谢 Christian,是的,一旦我将测试文件保存为 UTF-8,它就可以正常工作了。我使用了 ScITE,虽然它不是原始问题,因为这个字符串是在读取文件之后出现的,它有那个字符。我现在将检查它如何在保存为 UTF 的脚本中使用 File.read。发送很多
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-07-25
  • 2011-04-10
  • 1970-01-01
  • 2011-05-03
  • 2010-12-16
  • 2017-05-11
相关资源
最近更新 更多