处理中文rss解析的一点经验...

网上的所谓gb2312,实际字库是不全的,比如陶喆的喆就出不来,但是浏览器自己就能解析出来...
写代码就会出问题...要么用ignore参数忽略掉,但这只是回避了这个问题
我现在发现用rss解析的时候,要把它换成gb18030,就能解析出来~

比如用ruby:
require "iconv"
puts Iconv.iconv("GB2312","UTF-8",'陶喆')
显示错误: t.rb:2:in `iconv': "\xE5\x96\x86" (Iconv::IllegalSequence)
说明这个字库在gb2312里面是没有的,奈何咋出现在一篇encoding=gb2312的文章里面呢-_-

比如用python:
url = 'http://blogsearch.baidu.com/s?word=%D6%F7%B3%D6%C8%CB%D6%EC%B5%A4&tn=baidublogrss&bsm=0&rn=10'
import feedparser
c = feedparser.parse(url)
for e in c.entries:
print e.title
显示错误: 'gbk' codec can't encode character u'\xc3' in position 0: illegal multibyte sequence

修正如下就能正确显示:
require 'rss/2.0'
require "iconv"
url = 'http://blogsearch.baidu.com/s?word=%D6%F7%B3%D6%C8%CB%D6%EC%B5%A4&tn=baidublogrss&bsm=0&rn=10'
text = open(url).read
text.sub!(/gb2312/,'gb18030')
feed = RSS::Parser.parse(text.to_s,false)
for item in feed.items
puts Iconv.iconv("gb18030","utf-8",item.title)
end

这种问题也算是rails,python的rss lib里面中文处理领域的一些bug吧


--------------
chenjinlai
2008-05-13
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值