【发布时间】:2014-06-24 19:26:26
【问题描述】:
在 Java 6 中,
System.out.println(String.valueOf('\u0130').toLowerCase());
打印 i (u0069),但在 Java 7 中打印带有双点的 i (u0069 u0307)。
我知道它是土耳其语字符,但如何使用此代码使 Java 7 打印与 v6 相同的输出?
System.out.println(inputText.toLowerCase());
还要确保代码可以处理国际文本,而无需将 toLowerCase 函数硬编码为仅使用土耳其语区域设置。
【问题讨论】:
-
我怀疑您需要指定您正在使用的语言环境(作为第一个参数)。 Java 7 可能使用不同的默认语言环境。
-
@PeterLawrey 是的,Java 通过
Locale.getdefault使用默认语言环境,在我的例子中是 en_US.UTF-8。但我已经读到,在 java 7 中,这个特殊的土耳其字符的处理方式与以前的版本不同。参考:link -
考虑指定Normal Form。
-
有许多字符的大写、小写或标题大小写是两个字符而不是一个。这对 String 来说更为明显。
-
您的代码中应该有一个大警告,告诉您您正在使用 toLowerCase 而不指定语言环境
标签: java locale java-7 turkish