我必须在可能包含重音符(“é”,“à”等)的名称上申请UpperCase.
问题:
问题:
>与JUnit,“é”.toUpperCase转换为“E”,口音被删除
>在我的应用程序(一个Spring REST API)中,“é”.toUpperCase转换为“É”.输入来自Ember前端,但编码相同(UTF-8)
JUnit测试和Spring应用程序使用相同的字符集(UTF-8),语言环境是法语.两者都运行在Oracle Java 8上,在同一台机器上(Debian上的Jenkins CI,但是我可以在我的电脑上重现这种行为:Windows 7).
我尝试指定区域设置toUpperCase(Locale.FRANCE),但它不能解决我的问题.
你知道可能解释这个差异的东西吗?
解决方法
在与@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