【发布时间】:2012-08-10 10:09:44
【问题描述】:
我在比较字符串时遇到问题。我想像这样比较两个“éd”和“ef”法语文本
Collator localeSpecificCollator = Collator.getInstance(Locale.FRANCE);
CollationKey a = localeSpecificCollator.getCollationKey("éd");
CollationKey b = localeSpecificCollator.getCollationKey("ef");
System.out.println(a.compareTo(b));
这将打印-1,但在法语字母表中e 位于é 之前。但是当我们像这样只比较e和é时
Collator localeSpecificCollator = Collator.getInstance(Locale.FRANCE);
CollationKey a = localeSpecificCollator.getCollationKey("é");
CollationKey b = localeSpecificCollator.getCollationKey("e");
System.out.println(a.compareTo(b));
结果是1。你能告诉我们第一部分代码有什么问题吗?
【问题讨论】:
-
我在
Comparator及其Swing的RowSorter和RowFilter的实现中遇到了“同样的问题”(我认为这是可以接受的),JTable的Win1250-2等式。ISO 8859-1/2,所有非 ASCII 字符都在末尾排序,例如 e -> é e.i.,抱歉,不需要解决这个问题,因为它是完全可以接受的并且具有逻辑顺序