tech.cap

我在一望无际的路上

ruby中字符串的转码 使用方法以及注意事项

不同于java, ruby内部并不支持unicode(据说到2.0会支持, 但是没有确认)
在字符编码处理上ruby是借助于Open Group的iconv库, 这个库在linux上似乎默认就有,  windows上没有这个库, 解决方案在末尾

使用iconv很简单, 下面是把iso8859-1编码转换到GBK编码的例子

require 'iconv'
conv 
= Iconv.new("GBK""ISO-8859-1")
result 
= conv.iconv("hello")
result 
<< conv.iconv(nil)
conv.close

需要注意的是转换以后还需要调用一下iconv(nil)来刷新未输出的数据 , 最后记得关闭conv

以上方式可以用block来简化

Iconv.open(toencoding, fromencoding) do |cd|
  input.each {
|s| output << cd.iconv(s)}
  output 
<< cd.iconv(nil)
end

当然,还有一种更简单的方式

Iconv.conv(toendocing, fromencoding, str)

最后还要提醒一下, iconv接受编码是toencoding在前, fromencoding在后, 不要记错了.偶就是因为这个问题被郁闷了半天


题外话:  ruby中很多功能都依赖于各种库, 比如这个iconv, 真是胶水语言的典型范例.

--------------------------------------------------------------------
补充:  windows下面iconv 的安装

这里下载iconv安装包,  按照如下方式放置包中的文件就OK了

iconv.so ->    ruby\lib\ruby\1.8\i386-mswin32\
iconv.dll ->   windows\system32\
charset.dll -> windows\system32\

更详细的说明见安装包中的README



posted on 2005-11-28 17:14 tech.cap 阅读(1513) 评论(4)  编辑  收藏 所属分类: tipsruby

Feedback

# re: ruby中字符串的转码 使用方法以及注意事项 2006-04-13 00:14 hi2005

非常有帮助.多谢多谢  回复  更多评论   

# re: ruby中字符串的转码 使用方法以及注意事项 2007-03-01 09:59 r

rr  回复  更多评论   

# re: ruby中字符串的转码 使用方法以及注意事项 2007-03-01 10:04 ruby

请问我在将gb2312转到iso-8859-1时,老是不行呀??请帮忙看看!
代码:
Iconv.conv(“iso-8859-1”, "gb2312", “中文”)  回复  更多评论   

# re: ruby中字符串的转码 使用方法以及注意事项 2007-03-04 11:33 cap

我这里没有问题 注意带上ignore参数  回复  更多评论   



标题  
姓名  
主页
验证码 *  
内容(请不要发表任何与政治相关的内容)  
  登录  使用高级评论  新用户注册  返回页首  恢复上次提交      
该文被作者在 2005-11-28 18:11 编辑过
 
 
相关链接:
网站导航: