编程语言
首页 > 编程语言> > 按字母顺序排列的中文 – java.text.Collat​​or

按字母顺序排列的中文 – java.text.Collat​​or

作者:互联网

我一直在用中文测试字母排序(如果我可以这么称呼的话).这是Excel对一些示例单词进行排序的方式:

啊<波<词<的<俄<佛<歌<和<及<课<了<馍<呢<票<气<日<四<特<瓦<喜<以<只

0<2<85<!<@<版本<标记<成员<错误<导出<导航<Excel 文件<访问<分类<更改<规则<HTML<基本<记录<可选<快捷方式<类别<历史记录<密码<目录<内联<内容<讨论<文件<页面<只读

这就是Collections.sort(list,simplified_chinese_collat​​or_comparator)(第一个以粗体显示的冒犯字符)的结果:

啊<波<词<的<俄<佛<歌<和<及<课<了<呢<票<气<日<四<特<瓦<喜<以<只<

!<@<0<2<85<Excel 文件<HTML<版本<标记<成员<错误<导出<导航<访问<分类<更改<规则<基本<记录 <可选<快捷方式<类别<历史记录<密码<目录<内联<内容<讨论<文件<页面<只读

我对中文一无所知.有谁知道为什么Collat​​or输出它的不同,或者它的基础是什么?

是否还有其他基于语言的排序库?

解决方法:

为什么会有所不同?因为有几种不同的方法可以排序表意字符甚至整个单词.困在我脑海中的是:

>按笔画数
>通过使用拉丁音译然后“自然地”排序(当然根据中文特定的规则)

还有其他方法,例如Unicode Technical Report #35提到其中一些(更多的是巧合,没有必要),但你必须有足够的时间来完成它.

为了回答你的问题,为什么这些排序顺序不同,这只是因为Java包含自己的排序规则而且它不依赖于操作系统的排序规则(就像Excel那样).这些规则可能有所不同.您可能还想尝试ICU,这是Java中类和规则的来源(通常比JDK领先一步).

标签:chinese-locale,java,locale,internationalization
来源: https://codeday.me/bug/20190826/1725658.html