我正在使用 Ruby 1.9.3 的 DocSplit gem 来创建 Word 文档的 Unicode UTF-8 版本。令我惊讶的是,今天当我对其中一个文档的特定部分进行测试时,我开始遇到字符编码不一致的问题。
我已经尝试了多种不同的方法来解决我将在下面列出的问题,但到目前为止我取得的最大成功是删除所有非 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 库中找到的编码选项。这些基本上与正则表达式做了同样的事情。
这一切都归结为我正在尝试匹配输出以进行测试。我什至应该关心这些特殊字符吗?有没有更好的方法来匹配这些字符而不盲目删除它们?
最佳答案
尝试添加:
# encoding: utf-8
在失败的 rspec 文件的顶部。这应该确保:
raw_title = raw_title.gsub(/’/, "")
在您的规范工作中。
关于ruby-on-rails - 在 Rspec 测试中处理非 ascii 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/12596546/