【问题标题】:Parse XML in Windows-1251 encoding?在 Windows-1251 编码中解析 XML?
【发布时间】:2014-04-22 13:10:06
【问题描述】:

尝试运行:

Nokogiri::XML(open("http://my.url.com/any/path.xml"))

例如:

Nokogiri::XML(open("http://bar-navig.yandex.ru/u?ver=2&show=32&url=google.com"))

但我明白了:

Nokogiri::XML::SyntaxError: 不支持的编码 windows-1251

但仅在服务器上。在本地计算机上它工作正常。

iconv 好像支持这种编码:

iconv --list | grep 1251
CP1251 MS-CYRL WINDOWS-1251

即使我尝试在 bash 中运行

xmllint 'http://bar-navig.yandex.ru/u?ver=2&show=32&url=google.com'

效果很好。

红宝石 1.9.3 导轨 3.2.16 nokogiri 1.6.1 操作系统:FreeBSD 8.1

这里是第 16 行的代码示例。 https://github.com/anoam/seo_params/blob/master/lib/seo_params/yandex.rb

这是 URL 示例: http://bar-navig.yandex.ru/u?ver=2&show=32&url=google.com

我该如何解决?

【问题讨论】:

  • 你在服务器上使用什么版本的 Ruby?
  • 我们需要查看您的代码和输入数据的最小示例来证明问题。
  • Ruby 1.9.3 Rails 3.2.16 nokogiri 1.6.1 操作系统:FreeBSD 8.1 我将在几分钟后将代码示例添加到 OP。
  • 请不要链接到您的代码。 WHEN 该链接失效,您的问题将毫无意义。 SO 更喜欢看到一个可以证明问题的最小样本。要求我们追踪您的代码会阻碍潜在的答案。
  • 很抱歉,我不明白是什么问题。原始帖子中有问题代码的最简单示例。 > Nokogiri::XML(open("my.url.com/any/path.xml")) 而不是 "my.url.com/any/path.xml" 我尝试了不同的 url,例如 "bar-navig.yandex.ru/u?ver=2&show=32&url=google.com"。

标签: ruby-on-rails xml nokogiri


【解决方案1】:

Nokogiri::XMLNokogiri::XML::Document.parse() 的快捷方式,请查看Nokogiri::XML::Document.parse() 的文档

parse(string_or_io, url = nil, encoding = nil, options = ParseOptions::DEFAULT_XML, &block) 

encoding(可选)是处理文档时应该使用的编码。

【讨论】:

  • 感谢您的回答。但我试图在参数中设置编码。但结果是一样的: > Nokogiri::XML(open("bar-navig.yandex.ru/…), nil, 'windows1251') > Nokogiri::XML::SyntaxError: Unsupported encoding windows-1251
【解决方案2】:

问题在这里解决了: https://github.com/sparklemotion/nokogiri/issues/1093

谢谢大家!

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2017-05-17
    • 2014-10-12
    • 2021-04-30
    • 1970-01-01
    • 2011-09-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多