寻找带有标准化器(NFD,NFKD,NFC,NFKC)的宝石,用于jruby 1.8.2(原生实现)

时间:2011-08-15 04:38:42

标签: unicode utf-8 jruby

是否有原生宝石(因此它可用于jruby 1.8.2),它实现了UTF8规范化器(NFD,NFKD,NFC,NFKC)?

1 个答案:

答案 0 :(得分:2)

Ruby v1.8在Unicode上非常不稳定。我发现v1.9是用于理智处理的最小Ruby版本。即便如此,unicode_utils gem for v1.9.1 for better绝对是不可或缺的。它具有完整的casemapping和规范化功能。你真的需要它。

不幸的是,它不包括排序规则,因此您无法以Perl或可访问ICU库的语言在Ruby中执行alphabetic sorts 。整理是最难做到的,所以它缺失并不奇怪。但它至关重要,因为它几乎是我们用文本做的所有事情的基础。这不仅仅是排序;这是关于简单的字符串比较。大多数人都没有意识到这一点。

我谈到了Ruby的Unicode支持以及你可以做些什么来使我的third OSCON talk几周之前的生活变得更轻松。我承认我放弃了Ruby v1.8;太令人沮丧了。

这不是对Ruby的打击,因为对于今天大多数语言来说,同样的事情可以说不是最新版本。

  • 除非你正在运行v1.9,否则你不会对Ruby和Unicode感到满意。
  • 如果您没有使用广泛的版本运行Python v3(最好是v3.2或v3.3),那么您将对使用Unicode的Python感到不满。
  • 如果你没有运行Java v1.7,那么你会对使用Unicode的Java感到不满 - 甚至可能。 :(
  • 如果您没有运行Perl v5.14或更高版本,您可能会对使用Unicode的Perl感到不满。

因此,这四个人的情况与PHP,Javascript和Go的情况完全不同。使用后三种语言,你运行的版本并不重要,因为

  • 对于前两个,您将永远不满意他们的Unicode支持。这真的很糟糕,因为使用它们的人几乎不会切换到真正的Unicode支持的真实语言。利基太特殊了。
  • 对于Go,你永远不会对它的Unicode支持感到不满 - 除非你赶时间:标准化模块非常接近准备就绪并且已经出来了,而整理模块正在进行中,但它确实是一个更难了。

你有没有办法使用Ruby v1.9?