【问题标题】:Read GB2312 encoding page using Ruby使用 Ruby 读取 GB2312 编码页面
【发布时间】:2014-08-25 01:07:25
【问题描述】:

我正在尝试解析 GB2312 编码页面 (http://news.qq.com/a/20140824/015032.htm),这是我的代码。

我还没有进入解析部分,只是在打开和阅读中,我得到了错误。

这是我的代码:

require 'open-uri'
open("http://news.qq.com/a/20140824/015032.htm").read

这是错误:

Encoding::InvalidByteSequenceError: "\x8B" on GB2312

我正在使用 Ruby 2.0.0p247

有什么办法吗?

【问题讨论】:

    标签: ruby-on-rails ruby gb2312


    【解决方案1】:

    我不完全知道为什么在调用.read 时会发生这种情况,但如果您使用 Nokogiri,您可以解决它。只需将文件对象直接传递给 Nokogiri 即可,无需调用.read

    require 'open-uri'
    file = open("http://news.qq.com/a/20140824/015032.htm")
    document = Nokogiri(file)
    

    【讨论】:

      【解决方案2】:

      我无法使用 2.0.0p247 复制错误,

      require 'open-uri'
      open("http://news.qq.com/a/20140824/015032.htm").read
      

      工作正常。

      然而

      require 'open-uri'
      open("http://news.qq.com/a/20140824/015032.htm").read.encode('utf-8')
      

      会引发错误

      Encoding::InvalidByteSequenceError: "\x8B" on GB2312
      

      您是否正在尝试进行一些编码转换?

      【讨论】:

        【解决方案3】:

        你可以试试这个

        document = Nokogiri::HTML(open("http://news.qq.com/a/20140824/015032.htm"), nil, "GB18030")
        

        【讨论】:

          猜你喜欢
          • 2013-09-27
          • 2017-06-16
          • 1970-01-01
          • 1970-01-01
          • 2017-02-27
          • 2022-11-30
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多