[转]关于Java对中文排序的问题

 

 

 
1
2
3
4
5
6
Comparator chinese_cmp = Collator.getInstance(Locale.CHINA);
 
String[] strs = new String[] { "王五", "李二", "吴二" };
Arrays.sort(strs, chinese_cmp);
for (String str : strs)
      System.out.println(str);

上面这段代码是用来对中文进行排序,执行后的结果是:

李二
王五
吴二

但是,如果运行这个程序的时候指定了扩展jar包路径,例如

java -Djava.ext.dirs=xxxx   类名

得到的结果就变成了

吴二
李二
王五

百思不得其解,想起以前做加密的时候也曾遇见类似的问题,明明一个运行很好的程序放到其他地方就不能跑,原因是跟jre的扩展lib目录中的jar包问题,再次打开 JRE/lib/ext 目录发现有这么一个文件 localedata.jar,猜想应该跟这个文件有关,把这个文件拷贝到手工指定的扩展jar包路径xxxx中后,再次运行程序,问题解决。

原文地址:https://www.cnblogs.com/ZhuRenWang/p/4857452.html