我正在尝试解析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
任何解决方案?
答案 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")