gsub :: ArgumentError(UTF-8 中的字节序列无效)
此代码使用 Hpricot
gem 获取包含 UTF-8 字符的 HTML。
# <div>This is a test<a href="">测试</a></div>
div[0].to_html.gsub(/test/, "")
当运行时,它会输出此错误(指向 gsub):
ArgumentError (invalid byte sequence in UTF-8)
我们如何解决此问题?
This code uses the Hpricot
gem to get HTML that contains UTF-8 characters.
# <div>This is a test<a href="">测试</a></div>
div[0].to_html.gsub(/test/, "")
When that is run, it spits out this error (pointing at gsub):
ArgumentError (invalid byte sequence in UTF-8)
How can we fix this issue?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
弄清楚了问题。 Hpricot 的
to_html
调用触发错误的方法,因此为了消除错误,我们需要将 Hpricot 文档编码为 UTF-8,而不仅仅是那个字符串。我们这样做:然后我们可以调用其他 Hpricot 方法,但现在整个文档都有 UTF-8 编码,并且不会给我们任何错误。
Figured out the issue. Hpricot's
to_html
calls methods that trigger the error so to get rid of that we need to make the Hpricot document encoding UTF-8, not just that one string. We do that like this:And then we can call other Hpricot methods but now the whole document has UTF-8 encoding and it won't give us any errors.
在这种情况下,to_html 看起来返回一个非 utf8 字符串。
我对包含一些非 utf8 字符的文件有同样的问题。我发现的修复方法并不是很漂亮,但它也适用于您的情况:
小心,我不确定是否没有任何数据丢失。
The to_html looks to return a non-utf8 string in this case.
I had same problem with file containing some non-utf8 characters. The fix I found is not really beautiful, but it could also works for your case :
Be careful, I'm not sure there is no one data lost.