Java 与 MySQL 具有相似特征的整理器 utf8_general_ci 整理
Java Collator with similar characteristic as MySQLs utf8_general_ci collation
是否有任何 Collator
实现与 MySQL 的 utf8_general_ci 具有相同的特性?我需要一个不区分大小写并且 不区分 德语变音符号的整理器,例如 ä
和元音 a
.
背景:
我们最近遇到了一个错误,该错误是由 table 中错误的排序规则引起的。使用的排序规则是 utf8_general_ci
,其中 utf8_bin
是正确的排序规则。特定列具有唯一索引。 utf8_general_ci
排序规则不区分 pöker
和 poker
之类的词,因此行被合并,这是不希望的。
我现在需要一种方法来为我们的 Java 应用程序实现一个模块,该模块修复错误的行。
您可以使用以下整理器:
Collator collator = Collator.getInstance();
collator.setStrength(Collator.PRIMARY);
具有这种实力的整理者只会在比较过程中考虑主要差异。
考虑一个例子:
System.out.println(compare("abc", "ÀBC", Collator.PRIMARY)); //base char
System.out.println(compare("abc", "ÀBC", Collator.SECONDARY)); //base char + accent
System.out.println(compare("abc", "ÀBC", Collator.TERTIARY)); //base char + accent + case
System.out.println(compare("abc", "ÀBC", Collator.IDENTICAL)); //base char + accent + case + bits
private static int compare(String first, String second, int strength) {
Collator collator = Collator.getInstance();
collator.setStrength(strength);
return collator.compare(first, second);
}
输出为:
0
-1
-1
-1
查看这些链接以获取更多信息:
http://www.javapractices.com/topic/TopicAction.do?Id=207
https://docs.oracle.com/javase/7/docs/api/java/text/Collator.html#PRIMARY
是否有任何 Collator
实现与 MySQL 的 utf8_general_ci 具有相同的特性?我需要一个不区分大小写并且 不区分 德语变音符号的整理器,例如 ä
和元音 a
.
背景:
我们最近遇到了一个错误,该错误是由 table 中错误的排序规则引起的。使用的排序规则是 utf8_general_ci
,其中 utf8_bin
是正确的排序规则。特定列具有唯一索引。 utf8_general_ci
排序规则不区分 pöker
和 poker
之类的词,因此行被合并,这是不希望的。
我现在需要一种方法来为我们的 Java 应用程序实现一个模块,该模块修复错误的行。
您可以使用以下整理器:
Collator collator = Collator.getInstance();
collator.setStrength(Collator.PRIMARY);
具有这种实力的整理者只会在比较过程中考虑主要差异。
考虑一个例子:
System.out.println(compare("abc", "ÀBC", Collator.PRIMARY)); //base char
System.out.println(compare("abc", "ÀBC", Collator.SECONDARY)); //base char + accent
System.out.println(compare("abc", "ÀBC", Collator.TERTIARY)); //base char + accent + case
System.out.println(compare("abc", "ÀBC", Collator.IDENTICAL)); //base char + accent + case + bits
private static int compare(String first, String second, int strength) {
Collator collator = Collator.getInstance();
collator.setStrength(strength);
return collator.compare(first, second);
}
输出为:
0
-1
-1
-1
查看这些链接以获取更多信息:
http://www.javapractices.com/topic/TopicAction.do?Id=207 https://docs.oracle.com/javase/7/docs/api/java/text/Collator.html#PRIMARY