论坛首页 Ruby版 ruby

Iconv的GB2312无法支持陶喆的"喆"字

浏览 962 次
精华帖 (0) :: 良好帖 (0) :: 新手帖 (0) :: 隐藏帖 (0)
作者 正文
时间:2008-05-12
咋办?这个字比较重要,不能ignore掉...

如下ruby代码不能执行...
require "iconv"
puts Iconv.iconv("GB2312","UTF-8",'陶喆')


t.rb:2:in `iconv': "\xE5\x96\x86" (Iconv::IllegalSequence)
from t.rb:2:in `<main>'

如果陶喆里的那个'喆'去掉就没问题...

我的目的是用RSS::Parser.parse解析rss文章,发现有喆的文章会因为那个字无法解析有乱码...

我又用了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

网上的gb2312字库不全,要改成gb18030就行了
   
时间:2008-05-12
GBK呢?GB18030呢?
   
0 请登录后投票
时间:2008-05-12
theone 写道
GBK呢?GB18030呢?

都用过,乱码,打不出那个字
   
0 请登录后投票
时间:2008-05-12
puts Iconv.iconv("gb18030","UTF-8",'陶喆')

没有问题啊
   
0 请登录后投票
时间:2008-05-12
irb(main):005:0> puts "陶喆"
陶喆
=> nil
   
0 请登录后投票
时间:2008-05-26
为什么不用 UTF-8?
   
0 请登录后投票
时间:2008-05-26
说了800遍了,字符集统一全部使用utf8,哪里都不会有问题。
   
0 请登录后投票
时间:2008-05-31
Lucas Lee 写道
说了800遍了,字符集统一全部使用utf8,哪里都不会有问题。

问题是别的网站的服务,代码你能统一吗
   
0 请登录后投票
时间:2008-06-24
加个chars了?
   
0 请登录后投票
时间:2008-07-04
恩 我发现 在转换的时候 UTF-8 转城 GB2312 像()等是无法识别的 报异常
   
0 请登录后投票
论坛首页 Ruby版 ruby

跳转论坛:
JavaEye推荐