Ruby 字符串函数不支持 UTF-8。
例如,['l', 'ł', 'm'].sort
返回["l", "m", "ł"]
而不是["l", "ł", "m"]
。
如何在 Ruby 中对 UTF-8 字符串进行排序?
在 RoR 中对 UTF-8 字符串进行排序 - 接受的答案不支持 ł 字符(问题自 2015 年以来未解决,被 2014 年打开的 PR 等待阻止(,截至 2017 年 10 月 8 日未合并等待。
ffi-icu 答案适用于安装了 libicu 的系统,AFAIK 并不是真正可移植的。
好的解决方案是使用 gem https://github.com/twitter/twitter-cldr-rb
require 'twitter_cldr'
collator = TwitterCldr::Collation::Collator.new
collator.sort(['m', 'ł', 'l'])
=> ["l", "ł", "m"]