如何在Ruby 1.9上替换Unicode gem?

时间:2009-08-24 14:50:31

标签: ruby unicode gem ruby-1.9

不幸的是,Unicode 0.1(sudo gem install unicode)在Ruby 1.9上不起作用。我有以下代码段:

require "rubygems"
require "unicode"

str = "áéíóúç"
Unicode.normalize_KD(str).gsub(/[^\x00-\x7F]/n, "")
#=> aeiouc

我用它将标题转换为固定链接,而不删除重音字符。

有没有办法使用packunpack方法转换此类文本?

2 个答案:

答案 0 :(得分:13)

更新:更好的选择可能是使用专门为这些缺失功能创建的gem unicode_utils

require "unicode_utils"
UnicodeUtils.nfkd("áéíóúç").gsub(/[^\x00-\x7F]/,'').to_s
#=> "aeiouc"

您是否有可能依赖Rails的ActiveSupport?然后,您可以执行以下操作:

require "activesupport"
mb_str = ActiveSupport::Multibyte::Chars.new("áéíóúç")
mb_str.normalize(:kd).gsub(/[^\x00-\x7F]/,'').to_s
#=> "aeiouc"
编写

ActiveSupport::Multibyte是为了给Ruby 1.8带来UTF-8 / Unicode支持,但在1.9中工作正常。如果您不希望它作为外部依赖项,您可以借用一些the code

答案 1 :(得分:1)

Rails中还有I18n.transliterate('string')方法。像魅力一样。