Какая кодировка по умолчанию для JVM? - PullRequest
49 голосов
/ 17 июня 2009

Является ли UTF-8 кодировкой по умолчанию в Java?
Если нет, то как узнать, какая кодировка используется по умолчанию?

Ответы [ 7 ]

85 голосов
/ 17 июня 2009

Набор символов по умолчанию для JVM - это система, в которой он работает. Для этого нет никакого конкретного значения, и вы вообще не должны зависеть от кодировки по умолчанию, являющейся каким-либо конкретным значением.

К нему можно получить доступ во время выполнения через Charset.defaultCharset(), если это вам нужно, хотя на самом деле вы должны указать , всегда указав кодировку , когда вы можете это сделать.

27 голосов
/ 17 июня 2009

Обратите внимание, что вы можете изменить кодировку JVM по умолчанию, используя смутно названное свойство file.encoding.

Если ваше приложение особенно чувствительно к кодировкам (возможно, из-за использования API-интерфейсов, подразумевающих кодировки по умолчанию), вам следует явно установить для этого параметра при запуске JVM постоянное (известное) значение.

22 голосов
/ 16 сентября 2014

Существует три кодировки по умолчанию:

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

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

  • И кодировка InputStreamReader:
    InputStreamReader.getEncoding()

Подробнее об этом можно прочитать на этой странице .

8 голосов
/ 10 июля 2016

Я уверен, что это зависит от реализации JVM, но я смог «повлиять» на файл file.encoding моего JVM по умолчанию, выполнив:

export LC_ALL=en_US.UTF-8

(работает на Java версии 1.7.0_80 в Ubuntu 12.04)

Кроме того, если вы наберете «locale» из консоли unix, вы должны увидеть там больше информации.

Весь кредит идет на http://www.philvarner.com/2009/10/24/unicode-in-java-default-charset-part-4/

6 голосов
/ 01 июня 2018

Вы можете использовать это, чтобы распечатать значения по умолчанию 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());
        }
}

Компиляция и запуск

javac PrintCharSets.java && java PrintCharSets
6 голосов
/ 17 июня 2009

Это будет зависеть от локали. Другой язык, другая кодировка по умолчанию.

3 голосов
/ 06 декабря 2018

Чтобы получить настройки Java по умолчанию, просто используйте:

java -XshowSettings 
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...