因此,我试图使用nokogiri做一些屏幕抓取a certain site,但网站所有者未能在<meta>
标记中指定正确的页面编码。这样做的结果是我试图处理那些认为他们是utf-8的字符串,但实际上并非如此。ruby字符串编码
(如果你愿意,这里是我使用来测试这个文件:
- 主文件:http://dpaste.de/nif5/
- ann.html:http://dpaste.de/YsLM/
- ann2.html:http://dpaste.de/Lofi/
- ann3 .html:http://dpaste.de/R21j/
- ap.html:http://dpaste.de/O9dy/
- 输出:http://dpaste.de/WdXc/
)
做搜索周围的很多后(this SO question特别有用),我发现,在该测试字符串调用encode('iso-8859-1', 'utf-8')
“作品”,因为我得到一个正确的©象征。现在的问题是,我想要的其他字符在转换为拉丁编码时不起作用(例如,Shōta
,变成Sh�\x8Dta
)。
现在,我可能会打扰适当的网站管理员,并尝试让他们修复他们该死的编码,但在此期间,我希望能够使用我得到的字节。我相当肯定,有一种方法,但我不能为我的生活弄清楚它是什么。
确实,Firefox报告说该页面是utf-8编码的,并且它看起来很好。问题是,当我将字符串拉出来时,它们似乎是一些奇怪的拉丁字母编码 - 但是包括unicode字符编码,这非常烦人,而且非常混乱。当使用文件的本地副本时,添加适当的标记解决了这个问题,但我不确定为什么这是服务器已经发送utf-8头文件的原因。 :/ – 2010-03-01 11:16:21