使用Ruby读取GB2312编码页面

时间:2014-08-25 01:07:25

标签: ruby-on-rails ruby gb2312

我正在尝试解析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

任何解决方案?

3 个答案:

答案 0 :(得分:1)

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

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

答案 1 :(得分:0)

我无法使用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

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

答案 2 :(得分:0)

你可以试试这个

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