【问题标题】:remove diacritics with iconv in ruby on rails not working在 ruby​​ on rails 中使用 iconv 删除变音符号不起作用
【发布时间】:2013-04-20 13:11:25
【问题描述】:

在 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

谁能帮帮我?

【问题讨论】:

    标签: ruby-on-rails ruby diacritics iconv


    【解决方案1】:

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

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

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

    "Dánsky prezídent".parameterize # => "dansky-prezident"
    

    【讨论】:

    • 谢谢,但我还有另一个问题:ActionView::Template::Error (undefined method `unpack' for nil:NilClass): in parsed_text function: parsedText = ActiveSupport::Inflector.transliterate(parsedText) #在这一行上 parsedText = lemmatizer.lemmatize(parsedText).body
    猜你喜欢
    • 2011-04-02
    • 1970-01-01
    • 2022-01-23
    • 1970-01-01
    • 1970-01-01
    • 2022-06-13
    • 2014-02-08
    • 2016-11-29
    相关资源
    最近更新 更多