Ruby windows-1250编码

Ruby windows-1250编码,ruby,encoding,Ruby,Encoding,我正在尝试使用字符集windows-1250从站点获取数据 我有以下代码: require 'open-uri' p open('http://www.ceskybenzin.cz/mapa/0').read.force_encoding('Windows-1250').encode('UTF-8').scan /addMarker\( point, '(.*?) - (.*?) - (.*?) - (.*?)', 'green', (.*?), bublina, 0 \);/ 我得到的数据如

我正在尝试使用字符集windows-1250从站点获取数据 我有以下代码:

require 'open-uri'
p open('http://www.ceskybenzin.cz/mapa/0').read.force_encoding('Windows-1250').encode('UTF-8').scan /addMarker\( point, '(.*?) - (.*?) - (.*?) - (.*?)', 'green', (.*?), bublina, 0 \);/
我得到的数据如下:

["EuroOil", "Prun\u00E9\u0159ov ", "U\u0161\u00E1k", "Zat\u00EDm nezadan\u00FD kraj", "181"]
有人能告诉我如何正确地从windows-1250站点获取数据吗


谢谢

您的数据中有unicode-8符号,而不是win-1250

要将当前示例字符串转换为正确的文本,可以执行以下操作

data = ["EuroOil", "Prun\u00E9\u0159ov ", "U\u0161\u00E1k", "Zat\u00EDm nezadan\u00FD kraj", "181"]
data.select{|snippet| snippet.encode("UTF-8")}
=>[“欧洲石油”、“普伦诺夫”、“乌沙克”、“扎蒂姆·内扎丹·克拉吉”、“181”]


如果您示例的输出来自控制台,那么这是因为控制台输出采用utf-8编码,而不是源站点的编码(可能解析工作正常,直到它显示出来)

您能解释一下您希望获得的数据吗?在检查和显示输出时,您需要小心,不仅仅是检查输出不符合您的期望(因为它可能“有益地”转义扩展字符,以防字符串结束时字符可能无法显示)。试着打印字符串-当我这样做时,我看到
[“EuroOil”,“Prunřřov”,“Ušk”,“Zatím nezadanýkraj”,“181”]
,这看起来至少有效。
a[0] => ["Kont.cz (NOVA-KONT)", "Praha 4", "Opatovsk\xC3\xA1", "Hlavn\u00ED m\u011Bsto Praha", "1"]
a.last => ["EuroOil", "Prun\u00E9\u0159ov ", "U\u0161\u00E1k", "Zat\u00EDm nezadan\u00FD kraj", "181"]

a.last.select { |i| puts i.encode("utf-8") } => produces

EuroOil
Prunérov
Usák
Zatím nezadaný kraj
181