Qual é a codificação padrão da JVM?

O UTF-8 é a codificação padrão em Java?
Se não, como posso saber qual codificação é usada por padrão?

O conjunto de caracteres padrão da JVM é o do sistema em que está sendo executado. Não há um valor específico para isso e você geralmente não deve depender da codificação padrão ser um valor específico.

Ele pode ser acessado em tempo de execução via Charset.defaultCharset() , se for de alguma utilidade para você, embora você realmente deva sempre especificar a codificação explicitamente quando você puder fazê-lo.

Observe que você pode alterar a codificação padrão da JVM usando a propriedade com nome confuso file.encoding .

Se seu aplicativo for particularmente sensível a codificações (talvez por meio do uso de APIs que implicam codificações padrão), você deverá definir isso explicitamente na boot da JVM para um valor consistente (conhecido).

Existem três codificações “padrão”:

  • file.encoding:
    System.getProperty("file.encoding")

  • java.nio.Charset:
    Charset.defaultCharset()

  • E a codificação do InputStreamReader:
    InputStreamReader.getEncoding()

Você pode ler mais sobre isso nesta página .

Tenho certeza de que esta é uma implementação específica da JVM, mas eu consegui “influenciar” o arquivo padrão da minha JVM, codificando executando:

 export LC_ALL=en_US.UTF-8 

(executando java versão 1.7.0_80 no Ubuntu 12.04)

Além disso, se você digitar “locale” no seu console Unix, você deve ver mais informações lá.

Todo o crédito vai para http://www.philvarner.com/2009/10/24/unicode-in-java-default-charset-part-4/

Vai ser dependente do local. Localidade diferente, codificação padrão diferente.

Você pode usar isso para imprimir os padrões da 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()); } } 

Compile e execute

 javac PrintCharSets.java && java PrintCharSets