【发布时间】:2011-04-19 05:43:43
【问题描述】:
我正在使用 open-uri 读取一个声称以 iso-8859-1 编码的网页。当我读取页面内容时,open-uri 返回一个以 ASCII-8BIT 编码的字符串。
open("http://www.nigella.com/recipes/view/DEVILS-FOOD-CAKE-5310") {|f| p f.content_type, f.charset, f.read.encoding }
=> ["text/html", "iso-8859-1", #<Encoding:ASCII-8BIT>]
我猜这是因为网页的字节(或字符)\x92 不是有效的 iso-8859 字符。 http://en.wikipedia.org/wiki/ISO/IEC_8859-1。
我需要将网页存储为 utf-8 编码文件。关于如何处理编码不正确的网页的任何想法。我可以捕捉到异常并尝试猜测正确的编码,但这似乎很麻烦且容易出错。
【问题讨论】:
-
你使用的是什么版本的 Ruby?
-
我使用的是 1.9.2。是的,\x92 表示 CP1252。我正在寻找一个更通用的解决方案或关于如何在编码未知或与 html 标头不一致时解析 html 的想法
标签: ruby encoding internationalization open-uri