Java排序与MySQL排序不同

我需要检查表中的排序,表格内容由MySQL提供。 我正在使用以下行对列表进行排序:
Collections.sort(sorted, String.CASE_INSENSITIVE_ORDER);

并得到以下结果:
tes3@test.com
test4@test.com
test5@test.com
test@test.com
test_user@mail.com
user-og@driver.com

这是我通过查询从MySQL获得的:
SELECT 'email' FROM 'user' WHERE 1 ORDER BY 'user'.'email' ASC

tes3@test.com
test_user@mail.com
test@test.com
test4@test.com
test5@test.com
user-og@driver.com

如您所见,订单不一样。 似乎Java根据ASCII表排序: http : //www.asciitable.com/ 4 (52) - @ (64) - _ (95)

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

email字段排序规则为: utf8_unicode_ci
有什么问题,是否有任何比较器以相同的方式进行排序?

使用[Collator][1]

Collat​​or类执行区分区域敏感的String比较。 您可以使用此类为自然语言文本构建搜索和排序例程。

代码将是:

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