Java排序与MySQL排序不同

Java排序与MySQL排序不同,java,mysql,sorting,collections,comparator,Java,Mysql,Sorting,Collections,Comparator,我需要检查表中的排序,表内容由MySQL提供。我使用以下行对列表进行排序: Collections.sort(已排序,字符串。不区分大小写\u顺序) 并得到以下结果: tes3@test.com test4@test.com test5@test.com test@test.com 测试_user@mail.com 用户-og@driver.com 这是我通过查询从MySQL获得的: 从“用户”中选择“电子邮件”,其中1个订单由“用户”订购。“电子邮件”ASC: tes3@test.com 测试

我需要检查表中的排序,表内容由MySQL提供。我使用以下行对列表进行排序:
Collections.sort(已排序,字符串。不区分大小写\u顺序)

并得到以下结果:
tes3@test.com

test4@test.com

test5@test.com

test@test.com

测试_user@mail.com

用户-og@driver.com

这是我通过查询从MySQL获得的:
从“用户”中选择“电子邮件”,其中1个订单由“用户”订购。“电子邮件”ASC

tes3@test.com

测试_user@mail.com

test@test.com

test4@test.com

test5@test.com

用户-og@driver.com

正如你所看到的,顺序是不一样的。 Java似乎是根据ASCII表排序的:
4(52)-(64)-(95)

但在MySQL结果中,顺序是
\u->@->4

电子邮件
字段排序规则为:
utf8\u unicode\u ci


问题是什么?是否有比较器以相同的方式进行排序

使用
[Collator][1]

Collator类执行区分区域设置的字符串比较。您可以使用这个类为自然语言文本构建搜索和排序例程

代码为:

    Collator coll = Collator.getInstance(Locale.US);
    coll.setStrength(Collator.IDENTICAL); 
    Collections.sort(words, coll);

AFAIK java处理的
\uuu
不同,因此在排序时,它们在sql中处理。但造成这种情况的原因可能是您的本地语言设置。您在代码中是如何做到的?可能是重复的谢谢,这有助于使用数字和“@”等符号,但现在我在
空格
识别方面遇到了问题。MySQL输出:
现有测试公司
测试公司
测试公司10
测试公司
测试公司
使用Collator的Java排序结果:
现有测试公司
测试公司
测试公司
通过添加规则解决:
字符串rules=((RuleBasedCalator)Collator.getInstance(Locale.US)).getRules();RuleBasedCalator correctedCollator=新的RuleBasedCalator(rules.replaceAll(“