我尝试使用搜索,谷歌但没有运气。
操作系统:Windows XP Ruby版本1.9.3po
错误:
`gsub':不兼容的字符编码:UTF-8和IBM437
代码:
require 'rubygems'
require 'hpricot'
require 'net/http'
source = Net::HTTP.get('host', '/' + ARGV[0] + '.asp')
doc = Hpricot(source)
doc.search("p.MsoNormal/a").each do |a|
puts a.to_plain_text
end
程序输出少量字符串,但当文本为“NOŻYCE”时,我收到错误。 有人可以帮忙吗?
答案 0 :(得分:3)
源变量的内部编码是UTF-8,但这不是你想要的。
正如tadman所写,你必须先告诉Ruby,字符串中的实际字符是IBM437编码。然后,您可以将该字符串转换为您喜欢的编码,但前提是可以进行此类转换。
source.force_encoding('IBM437').encode('UTF-8')
在您的情况下,您无法将字符串转换为ISO-8859-2,因为并非所有IBM437字符都可以转换为该字符集。坚持使用UTF-8可能是您的最佳选择。
无论如何,您确定该文件实际上是在IBM437中传输的吗?也许它存储在HTTP服务器中,但它是通过另一种编码通过线路发送的。或者甚至可能不完全在IBM437中,它可能是CP852,也称为MS-DOC Latin 2(与ISO Latin 2不同)。
答案 1 :(得分:2)