Ruby on rails Rails:如何将非英语字符串降格?

Ruby on rails Rails:如何将非英语字符串降格?,ruby-on-rails,ruby,string,ruby-on-rails-3,lowercase,Ruby On Rails,Ruby,String,Ruby On Rails 3,Lowercase,如何在RubyonRails3中对非英语字符串进行降格 str = "Привет" # Russian puts str[0].ord # => 1055 str.downcase! puts str[0].ord # => 1055 (Should be 1087) 我希望它能在Ruby 1.8.7和Ruby 1.9.2中工作。为什么不使用gemunicode\u utils。此gem将不会强制downcase工作,但是您可以使用: str = "Привет"

如何在RubyonRails3中对非英语字符串进行降格

str = "Привет"    # Russian 
puts str[0].ord   # => 1055
str.downcase!
puts str[0].ord   # => 1055 (Should be 1087)

我希望它能在Ruby 1.8.7和Ruby 1.9.2中工作。

为什么不使用gem
unicode\u utils
。此gem将不会强制
downcase
工作,但是您可以使用:

str = "Привет"
str.mb_chars.downcase.to_s
#=> "привет"
UnicodeUtils.downcase('Привет') #=> 'привет'

如果您想像这样轻松地使用它:

> "Привет".downcase
=> "привет"
您必须将文件放入initializers文件夹string.rb

require 'unicode'

class String
  def downcase
    Unicode::downcase(self)
  end
  def downcase!
    self.replace downcase
  end
  def upcase
    Unicode::upcase(self)
  end
  def upcase!
    self.replace upcase
  end
  def capitalize
    Unicode::capitalize(self)
  end
  def capitalize!
    self.replace capitalize
  end
end

自从Ruby 2.4以来,就有一个内置的。来源:。有关详细信息,请参阅Ruby 2.4.0文档:

rails中一个简单的解决方案是将string.rb添加到initializers文件夹中,然后在此文件中,您可以使用mb_字符覆盖字符串,现在支持小写重音符号和字母,如

class String
  def downcase
    self.mb_chars.downcase.to_s
  end

  def capitalize
    self.mb_chars.capitalize.to_s
  end

  def upcase
    self.mb_chars.upcase.to_s
  end

  def titleize
    self.mb_chars.titleize.to_s
  end
end

你是说希腊语还是其他任何一种非英语的语言?目前,我对俄语感兴趣,但将来我可能想使用其他语言,因此,我正在寻找一个通用的解决方案。如果没有rails,您需要一个传统的
要求“active\u support/core\u ext”
来避免一个未定义的方法错误,这就是为什么他们没有在ruby 2.0中修复它:(
mb_chars
也可以使用
大写
upcase
。这是一个很好的解决方案!我们还可以调用
中的'ППцццц.mbцchars.downcase.wrappedцu string
在Ruby 2.4中,它最终可以像预期的那样工作:
中的“Пццццццц