对于我正在编写的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函数或其他更“规范”的方法?
答案 0 :(得分:1)
它叫做Collations。见https://docs.oracle.com/javase/tutorial/i18n/text/locale.html
请注意,您的数据库也可以使用排序规则对查询结果进行排序。请参阅例如mysql支持https://dev.mysql.com/doc/refman/5.0/en/charset-charsets.html
的内容