在* Unicode代码点*上按字典顺序比较两个Java字符串的首选方法是什么?

时间:2014-12-09 17:42:27

标签: java string unicode

对于我正在编写的Java程序,我特别需要按Unicode代码点按字典顺序对字符串进行排序。当您开始处理基本多语言平面之外的值时,String.compareTo()相同。 String.compareTo()按字典顺序比较16位char值的字符串。要查看这不相同,请注意U + FD00 ARABIC LIGATURE HAH WITH YEH ISOLATED FORM小于U + 1D11E MUSICAL SYMBOL G CLEF,但是阿拉伯字符的Java String对象"\uFD00"比较大于谱号的代理对"\uD834\uDD1E"

我可以手动循环代码点using String.codePointAt() and Character.charCount()并在必要时自行进行比较。是否有API函数或其他更“规范”的方法?

1 个答案:

答案 0 :(得分:1)

它叫做Collat​​ions。见https://docs.oracle.com/javase/tutorial/i18n/text/locale.html

请注意,您的数据库也可以使用排序规则对查询结果进行排序。请参阅例如mysql支持https://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html

的内容