J'aimerais savoir quelle est la valeur de la propriété Java Virtual Machine (JVM)) pour définir le codage de mon fichier sur UTF-8.
Est-ce que je mets -Dfile.encoding=UTF8
ou -Dfile.encoding=UTF-8
?
[INFO] BUILD SUCCESS
En tout cas, ça marche pour moi :)
Picked up Java_TOOL_OPTIONS: -Dfile.encoding=UTF8
Si vous exécutez un JDK 1.7.x Oracle HotSpot sur une plate-forme Linux où vos paramètres régionaux suggèrent UTF-8 (par exemple, LANG=en_US.utf8
), Si vous ne le définissez pas sur la ligne de commande avec -Dfile.encoding
, le JDK aura par défaut file.encoding
et le Charset
par défaut comme ceci:
System.out.println(String.format("file.encoding: %s", System.getProperty("file.encoding")));
System.out.println(String.format("defaultCharset: %s", Charset.defaultCharset().name()));
... rendements:
file.encoding: UTF-8
defaultCharset: UTF-8
... suggérant que la valeur par défaut est UTF-8
sur une telle plate-forme.
De plus, si Java.nio.charset.Charset.defaultCharset()
trouve que file.encoding
N'est pas défini, il recherche Java.nio.charset.Charset.forName("UTF-8")
, suggérant qu'il préfère cette chaîne, même si elle est bien aliasée, donc "UTF8" fonctionne également bien.
Si vous exécutez le même programme sur la même plate-forme avec Java -Dfile.encoding=UTF8
, Sans le mot-clé, vous obtenez:
file.encoding: UTF8
defaultCharset: UTF-8
... notant que le jeu de caractères par défaut a été canonisé de UTF8
à UTF-8
.
UTF8 et UTF-8 fonctionnent pour moi.
Ce n'est pas une réponse directe, mais très utile si vous n'avez pas accès à la façon dont Java démarre: vous pouvez définir la variable d'environnement Java_TOOLS_OPTIONS
à -Dfile.encoding="UTF-8"
et chaque fois que le jvm démarre, il choisit cette option.