Ruby on Rails:根据数据库排序规则比较两个字符串

2024-01-11

我有一个单词列表,想查找数据库中已经存在的单词。

我决定使用“SELECTword FROM table WHERE wordIN(array_of_words)”,然后循环结果。

问题是数据库排序规则。

http://www.collat​​ion-charts.org/mysql60/mysql604.utf8_general_ci.european.html http://www.collation-charts.org/mysql60/mysql604.utf8_general_ci.european.html

有很多不同的字符,MySQL 将其视为相同的。但是,在 Ruby 代码中 string1 不等于 string2。

例如:如果单词是“šuo”,数据库也可能返回“suo”,如果找到的话(并且没问题),但是,当我想检查,是否找到“šuo”的内容时,Ruby,当然,返回 false (šuo != suo)。

那么,有没有办法在 Ruby 中根据相同的排序规则来比较两个字符串呢?


我已经使用 iconv 来完成类似的事情:

require 'iconv'

class String
  def to_ascii_iconv
    Iconv.new('ASCII//IGNORE//TRANSLIT', 'UTF-8').iconv(self).unpack('U*').select { |cp| cp < 127 }.pack('U*')
  end
end

puts 'suo'.to_ascii_iconv
# => suo
puts 'šuo'.to_ascii_iconv
# => suo
puts 'suo'.to_ascii_iconv == 'šuo'.to_ascii_iconv
# => true

希望有帮助!

Zubin

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Ruby on Rails:根据数据库排序规则比较两个字符串 的相关文章

随机推荐