web-dev-qa-db-fra.com

Quel est l'encodage par défaut de la JVM?

UTF-8 est-il l'encodage par défaut en Java?
Sinon, comment savoir quel encodage est utilisé par défaut?

49
user67722

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.

85
Andrzej Doyle

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).

29
Brian Agnew

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 .

22
mrclrchtr

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/

9
mike32b

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
7
sdc

Cela dépendra des paramètres régionaux. Paramètres régionaux différents, encodage par défaut différent.

6
skaffman

Pour obtenir les paramètres par défaut Java, utilisez simplement:

Java -XshowSettings 
4
Juwit