java - String.toUpperCase 可以去除重音或不去除重音

标签 java

我必须对可能包含重音符号(“é”、“à”等)的名称应用 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/

相关文章:

java - 读取响应时出现 IllegalStateException

java - serialVersionUID = 1L 比生成串行版本 id 更好吗?

java - 如何处理 Bean 验证异常

java - Spring集成中的服务激活器组件是什么?

java - Java中String.matches()的使用

java - 如何停止 JBoss EAP 6.0.1

java - Spring AOP 切入点

java - 找到最小数字的索引

java - 在 eclipse Mars IDE 上通过 selenium webdriver 启动 Firefox 时,Firebug 不显示。

java - Hadoop不加载jdbc驱动