我正在使用 Ruby 1.9.3 的 DocSplit gem 来创建 Unicode UTF-8 版本的 word 文档。今天令我惊讶的是,当我对其中一个文档的特定部分进行测试时,我开始遇到字符编码不一致的问题。
我尝试了多种不同的方法来解决我将在下面列出的问题,但到目前为止我取得的最大成功是删除所有非 ASCII 字符。这远非理想,因为我不认为角色在数据库中真的会有那么大的问题。
gsub(/[^[:ascii:]]/, "")
这是我的输出与我的期望的示例:
My CODES'S APOSTROPHE
My CODES’S APOSTROPHE
第二个撇号应该看起来是波浪状的。如果将其粘贴到 irb 中,则会得到以下内容:\U+FFE2
我专门为这个角色尝试了正则表达式,它似乎在 Rubular 中工作。但是,一旦我将其放入模型中,就会出现语法错误。
syntax error, unexpected $end, expecting ')'
raw_title = raw_title.gsub(/’/, "")
我也尝试将编码强制为 UTF-8,但一切都已经在 UTF-8 中,这似乎没有效果。我尝试将输出强制为 US-ASCII,但出现字节序列错误。
我还尝试了 Ruby 库中的一些编码选项。这些基本上和正则表达式做同样的事情。
这一切都归结为我正在尝试匹配输出以进行测试。我什至应该关心这些特殊字符吗?有没有更好的方法来匹配这些字符而不盲目删除它们?