5

不幸的是,Unicode 0.1 ( sudo gem install unicode) 不适用于 Ruby 1.9。我有以下片段:

require "rubygems"
require "unicode"

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

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

pack有没有一种方法可以使用或方法转换此类文本unpack

4

2 回答 2

13

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

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 中也可以正常工作。如果您不希望它作为外部依赖项,您可以借用一些代码。

于 2009-08-24T16:06:27.613 回答
1

Rails中也有I18n.transliterate('string')方法。奇迹般有效。

于 2013-09-17T10:33:01.203 回答