0

我在 ruby​​ on rails 中使用 iconv 删除变音符号时遇到了一些问题

这是我的代码:

class Diacritics
  def removeDiacritics(text)
    dRemover = Iconv.new("ASCII//TRANSLIT", "UTF-8")
    text = dRemover.iconv(text).gsub(/[^a-zA-Z0-9 ]/, '')
  end
end

这是输出:

1.9.3-p392 :001 > require "diacritics"
/usr/local/rvm/gems/ruby-1.9.3-p392@persoc/gems/activesupport-3.2.12/lib/active_support/dependencies.rb:251:in `block in require': iconv will be deprecated in the future, use String#encode instead.
 => true 
1.9.3-p392 :002 > remover = Diacritics.new
 => #<Diacritics:0x00000004237068> 
1.9.3-p392 :003 > text = "Dánský prezídent"
 => "Dánský prezídent" 
1.9.3-p392 :004 > remover.removeDiacritics(text)
 => "Dnsk prezdent"

我期待“丹斯基总统”

fedora (httpd) 上的服务器 apache,使用 rvm 和 ruby​​ 1.9.3-p392

有谁能够帮我?

4

1 回答 1

0

您可以使用该ActiveSupport::Inflector.transliterate方法。

ActiveSupport::Inflector.transliterate("Dánsky prezídent") # => "Dansky prezident"

如果你需要这个作为 url slug,那就更容易了。

"Dánsky prezídent".parameterize # => "dansky-prezident"
于 2013-04-20T14:43:08.340 回答