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

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

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

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

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

以上方式可以用block来简化

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

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

None.gif 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



转载于:https://www.cnblogs.com/baoz/archive/2005/11/28/2269883.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值