4 回答
TA贡献1843条经验 获得超7个赞
我建议您使用HTML解析器。只要找到最快的一个。
解析HTML并不像看起来那样容易。
浏览器会在UTF-8 HTML文档中解析无效的UTF-8序列,只需将“ ...”符号放入即可。因此,一旦解析了HTML中的无效UTF-8序列,生成的文本便是有效字符串。
即使在属性值内部,您也必须解码amp等HTML实体
这是一个很好的问题,总结了为什么不能可靠地使用正则表达式解析HTML: RegEx匹配除XHTML自包含标签之外的其他打开标签
TA贡献1817条经验 获得超6个赞
attachment = file.read
begin
# Try it as UTF-8 directly
cleaned = attachment.dup.force_encoding('UTF-8')
unless cleaned.valid_encoding?
# Some of it might be old Windows code page
cleaned = attachment.encode( 'UTF-8', 'Windows-1252' )
end
attachment = cleaned
rescue EncodingError
# Force it to UTF-8, throwing out invalid bits
attachment = attachment.force_encoding("ISO-8859-1").encode("utf-8", replace: nil)
end
- 4 回答
- 0 关注
- 694 浏览
添加回答
举报