【问题标题】: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")