我必须在可能包含重音符号(“é”,“à”等)的名称上应用toUpperCase
。
问题:
"é".toUpperCase
转换为“E”,重音已删除 JUnit测试和Spring应用程序使用相同的字符集(UTF-8),语言环境是法语。两者都在同一台机器上运行Oracle Java 8(Debian上的Jenkins CI,但我可以在我的计算机上重现这种行为:Windows 7)。
我尝试指定区域设置toUpperCase(Locale.FRANCE)
,但它无法解决我的问题。
您是否知道可以解释这种差异的事情?
答案 0 :(得分:2)
与@JonathanLermitage的对话中,这不是Java问题,而是与未正确配置的单元测试中使用的嵌入式数据库(h2)相关。
我使用的是Java 8,没有特别的配置。
@Test
public void test()
{
String a = "àòùìèé";
String b = a.toUpperCase();
System.out.println(b);
System.out.println(Locale.getDefault());
assertEquals(b,"ÀÒÙÌÈÉ");
}
返回
ÀÒÙÌÈÉ
en_US
答案 1 :(得分:1)
我遇到了同样的问题,通过设置默认的Locale来解决这个问题:
Locale.setDefault(new Locale("fr_FR"));