处理中文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

你可能感兴趣的:(处理中文rss解析的一点经验...)