Является ли UTF-8 кодировкой по умолчанию в Java?
Если нет, как я могу узнать, какая кодировка используется по умолчанию?
Какова стандартная кодировка JVM?
Ответ 1
Набор символов по умолчанию для JVM - это система, в которой он работает. Для этого нет специального значения, и вы не должны обычно зависеть от кодировки по умолчанию, являющейся любым конкретным значением.
Доступ к нему можно получить во время выполнения через Charset.defaultCharset()
, если это вам пригодится, хотя на самом деле вы должны сделать так, чтобы явным образом указывал кодировку, когда вы можете это сделать.
Ответ 2
Обратите внимание, что вы можете изменить кодировку по умолчанию JVM, используя свойство confusingly named file.encoding
.
Если ваше приложение особенно чувствительно к кодировкам (возможно, с использованием API-интерфейсов, подразумевающих кодировки по умолчанию), тогда вы должны явно указать это при запуске JVM на согласованное (известное) значение.
Ответ 3
Существует три кодировки по умолчанию:
-
file.encoding:
System.getProperty("file.encoding")
-
java.nio.Charset:
Charset.defaultCharset()
-
И кодировка InputStreamReader:
InputStreamReader.getEncoding()
Подробнее об этом можно узнать на этой странице.
Ответ 4
Я уверен, что это конкретная реализация JVM, но я смог "повлиять" на мой файл jvm default.encoding, выполнив:
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/
Ответ 5
Он будет зависящим от языка. Различная локаль, различная кодировка по умолчанию.
Ответ 6
Вы можете использовать это, чтобы распечатать настройки по умолчанию 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
Ответ 7
Чтобы получить настройки java по умолчанию, используйте:
java -XshowSettings