首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >使用Ruby读取GB2312编码页

使用Ruby读取GB2312编码页
EN

Stack Overflow用户
提问于 2014-08-25 01:07:25
回答 3查看 448关注 0票数 1

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

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

这是我的密码:

代码语言:javascript
复制
require 'open-uri'
open("http://news.qq.com/a/20140824/015032.htm").read

这是一个错误:

代码语言:javascript
复制
Encoding::InvalidByteSequenceError: "\x8B" on GB2312

我正在使用Ruby 2.0.0p247

有解决办法吗?

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2014-08-25 01:40:20

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

代码语言:javascript
复制
require 'open-uri'
file = open("http://news.qq.com/a/20140824/015032.htm")
document = Nokogiri(file)
票数 1
EN

Stack Overflow用户

发布于 2014-08-25 02:06:07

我不能使用2.0.0p247复制错误,

代码语言:javascript
复制
require 'open-uri'
open("http://news.qq.com/a/20140824/015032.htm").read

效果很好。

然而,

代码语言:javascript
复制
require 'open-uri'
open("http://news.qq.com/a/20140824/015032.htm").read.encode('utf-8')

会引起错误

代码语言:javascript
复制
Encoding::InvalidByteSequenceError: "\x8B" on GB2312

你想要做一些编码转换吗?

票数 0
EN

Stack Overflow用户

发布于 2014-08-26 10:56:07

你可以试试这个

代码语言:javascript
复制
document = Nokogiri::HTML(open("http://news.qq.com/a/20140824/015032.htm"), nil, "GB18030")
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/25477816

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档