UTF-8 est-il l'encodage par défaut en Java?
Sinon, comment savoir quel encodage est utilisé par défaut?
Le jeu de caractères par défaut de la JVM est celui du système sur lequel elle s'exécute. Il n'y a pas de valeur spécifique pour cela et vous ne devriez généralement pas dépendre du codage par défaut d'une valeur particulière.
Il peut être consulté à l'exécution via Charset.defaultCharset()
, si cela vous est utile, bien que vous devriez vraiment faire un point de en spécifiant toujours l'encodage explicitement quand vous pouvez le faire.
Notez que vous pouvez modifier l'encodage par défaut de la machine virtuelle Java à l'aide de la propriété nommée de manière confuse file.encoding
.
Si votre application est particulièrement sensible aux encodages (peut-être grâce à l'utilisation d'API impliquant des encodages par défaut), vous devez explicitement définir cela au démarrage de la JVM sur une valeur cohérente (connue).
Il existe trois encodages "par défaut":
file.encoding:System.getProperty("file.encoding")
Java.nio.Charset:Charset.defaultCharset()
Et l'encodage de InputStreamReader:InputStreamReader.getEncoding()
Vous pouvez en lire plus sur cette page .
Je suis sûr que cela est spécifique à l'implémentation de la JVM, mais j'ai pu "influencer" le fichier par défaut de mon JVM en exécutant:
export LC_ALL=en_US.UTF-8
(en cours d'exécution Java version 1.7.0_80 sur Ubuntu 12.04)
De plus, si vous tapez "locale" depuis votre console Unix, vous devriez y voir plus d'informations.
Tout le mérite revient à http://www.philvarner.com/2009/10/24/unicode-in-Java-default-charset-part-4/
Vous pouvez l'utiliser pour imprimer les valeurs par défaut de la JVM
import Java.nio.charset.Charset;
import Java.io.InputStreamReader;
import Java.io.FileInputStream;
public class PrintCharSets {
public static void main(String[] args) throws Exception {
System.out.println("file.encoding=" + System.getProperty("file.encoding"));
System.out.println("Charset.defaultCharset=" + Charset.defaultCharset());
System.out.println("InputStreamReader.getEncoding=" + new InputStreamReader(new FileInputStream("./PrintCharSets.Java")).getEncoding());
}
}
Compiler et exécuter
javac PrintCharSets.Java && Java PrintCharSets
Cela dépendra des paramètres régionaux. Paramètres régionaux différents, encodage par défaut différent.
Pour obtenir les paramètres par défaut Java, utilisez simplement:
Java -XshowSettings