概述
在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问题 。有个邮件列表专门讨论这个 。
最后
以上就是可耐玫瑰为你收集整理的ROR中unicode的处理的全部内容,希望文章能够帮你解决ROR中unicode的处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复