ROR中unicode的处理

在ROR处理中文时遇到了一些问题,打算探索一下,今天先转一篇文章。

 

下面说的不是一个完整的答案,但我已经尽力啦。如果你真的想要解决这个问题,可以阅读一下Julian Tarkhanov’sUNICODE_PRIMER

※※※ Onigurama ※※※
首先,Onigurama (一个正则表达式引擎,ruby1.9开始采用)支持Unicode,也支持许多encoding,很好用,如果你只是想用搜索一下字符串,OK,就是它了。(按:不知道如何使用啊。。。)

※※※ jcode类库 ※※※
Ruby的String类是不区分unicode的. 有个叫做jcode的库,很简单,比如你只是想数一下一个UTF-8字符串中有多少个字符,或者遍历这些字符。

※※※ /./u 正则表达式 ※※※
Ruby本身也有一些处理UTF-8(使用正则表达式)的能力:使用’u'作为修饰。许多人hack UTF-8的主要方法就是str.scan(/./u),这样就返回了一个字符串数组,里面每个字符串中的若干字节代表一个UTF-8字 符。(另:str.unpack(’U*’))

※※※ unicode_hacks ※※※
如果你想在Rails里面用Unicode字符串,可以使用Julian的unicode_hacks插件 ,他们在irc.freenode.net上有个专门的channel:#multibyte_rails
unicode_hacks 插件很有想法,它会在使用str.unpack(’U*’)之前先尝试用下面这些扩展来做(按优先级顺序排列):
    1. icu4r : IBM ICU库的Ruby扩展,添加了诸如UString, URegexp等类来处理Unicode。(文档链接 )
    2. utf8proc : 一个很小型的库,便利字符串中的的字符然后一个个转过去,给String类和Interger类添加了了一些方法,比如String#utf8map和Integer#utf8。
    3. Unicode类: Yoshida Masato 做的一个扩展,提供`strcmp`, `[de]compose`, normalization 和大小写转换等功能。

看起来很多选择,很丰富,但是大都只实现了部分功能,而且都只刚刚开始,还不成熟。

※※※ Ruby-Character-Encoding ※※※
最近刚刚个东东加入了这场Unicode竞争:Nikolai Weibull的ruby-character-encoding库 , 意图在Ruby 1.8的string类上添加功能解决Matz想要在Ruby2.0才给于解决的Unicode问题(按:Ruby1.9 2007年年底才出,Ruby2.0等到哪辈子?),但是如果你使用这个类,就有可能导致其他使用标准string类的库崩溃。不过,在Nikolai的 努力下,这个库倒有希望完美的解决Unicode问题 。有个邮件列表专门讨论这个

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值