String.toUpperCase may strip accents or not

Jonathan Lermitage :

I have to apply toUpperCase on a name that may contain accents ("é", "à", etc.).
Problem:

  • with JUnit, "é".toUpperCase converts to "E", the accent is removed
  • in my application (a Spring REST API), "é".toUpperCase converts to "É". The input comes from an Ember frontend, but the encoding is the same (UTF-8)

JUnit tests and Spring application use the same characters set (UTF-8) and the locale is French. Both running on Oracle Java 8, on the same machine (Jenkins CI on Debian, but I can reproduce this behavior on my computer: Windows 7).
I tried to specify the locale toUpperCase(Locale.FRANCE), but it doesn't solve my problem.

Are you aware of something that may explain this difference?

freedev :

As in the conversation with @JonathanLermitage this is not a Java problem but is related to the embedded database (h2) used in the unit tests that is not correctly configured.


I'm using Java 8, no particular configuration.

  @Test
  public void test()
  {
    String a = "àòùìèé";
    String b = a.toUpperCase();
    System.out.println(b);

    System.out.println(Locale.getDefault());
    assertEquals(b,"ÀÒÙÌÈÉ");
  }

Returns

ÀÒÙÌÈÉ
en_US

Guess you like

Origin http://10.200.1.11:23101/article/api/json?id=457154&siteId=1
May