不幸的是,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方法转换此类文本?

最佳答案

更新:更好的选择可能是使用专门为这些缺失功能创建的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的编写是为了将utf-8/Unicode支持引入Ruby 1.8,但在1.9中也可以正常工作。如果您不希望将the code用作外部依赖项,则可以借用。

10-01 07:02