我必须对可能包含重音符号(“é”、“à”等)的名称应用 toUpperCase
。
问题:
- 使用 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
关于java - String.toUpperCase 可以去除重音或不去除重音,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43112475/