1

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

有什么解决办法吗?

4

3 回答 3

1

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

require 'open-uri'
file = open("http://news.qq.com/a/20140824/015032.htm")
document = Nokogiri(file)
于 2014-08-25T01:40:20.863 回答
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

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

于 2014-08-25T02:06:07.983 回答
0

你可以试试这个

document = Nokogiri::HTML(open("http://news.qq.com/a/20140824/015032.htm"), nil, "GB18030")
于 2014-08-26T10:56:07.320 回答