【问题标题】:How to address Compatibility Error with ruby如何解决与 ruby​​ 的兼容性错误
【发布时间】:2019-03-20 11:50:18
【问题描述】:

我有一个 ruby​​ 程序,它用许多正则表达式解析一大块文本。我遇到的问题是,只要文本包含“特殊字符”(例如 Kuutõbine 或 Noël),程序就会抛出 Encoding::CompatibilityError: incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string) 如何强制正确编码?

【问题讨论】:

  • 你如何强制正确的编码,或者你如何确保正确的编码被使用?强制编码通常不是你想要的。问题的核心是,你如何阅读你的大文本块,它最初是用什么编码的?
  • @Amadan 因此正在通过 API 调用读取文本块。所以我使用 HTTParty 从 JSON 中读取它。然后将该文本转储到局部变量中。

标签: ruby regex encoding utf-8


【解决方案1】:

您的正则表达式正在“编译”为 ASCII-8BIT。

只需在声明 Regex 的文件顶部添加编码声明:

编码:utf-8

你就完成了。现在,当 Ruby 解析您的代码时,它会假定您使用的每个文字(Regex、String 等)都以 UTF-8 编码指定。

【讨论】:

  • "incompatible encoding regexp match (UTF-8 regexp with ASCII-8BIT string)" - 同样,从 Ruby 2.0 开始,Ruby 默认为 UTF-8,这一行对任何当前未过时(非晦涩)的 Ruby 没有影响。它是 ASCII-8BIT 的文本,而不是正则表达式。
猜你喜欢
  • 2020-02-10
  • 1970-01-01
  • 1970-01-01
  • 2019-11-25
  • 1970-01-01
  • 2021-11-16
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多