Как JVM определяет (по умолчанию?) Кодировку символов для argv в Linux

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

Набор символов по умолчанию определяется во время запуска виртуальной машины и обычно зависит от локали и набора символов базовой операционной системы.

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

Использование кодировки символов по умолчанию частоплохая идея; лучше использовать явно указанную кодировку или всегда использовать одну и ту же кодировку для некоторого ввода-вывода. Но одним неизбежным использованием кодировки символов по умолчанию может быть кодировка символов, используемая для аргументов командной строки. В системе POSIX, такой как Linux, собственный (C / C ++) код JVM получает аргументы командной строки в виде завершенного нулями списка C / C ++char указатели. Который должен рассматриваться как указатель байтов, поскольку они должны кодировать кодовые точки вкаким-то (неясным) образом, JVM должна интерпретировать эти последовательности C / C ++chars (байты), чтобы преобразовать их в последовательность Javacharс, чтобы быть переданнымmain() программы Java. Я предполагаю, что JVM использует кодировку символов по умолчанию для этого.

Поэтому мне нужно точно знать, как JVM определяет кодировку по умолчанию для конкретной системы (современная операционная система GNU / Linux), чтобы я мог предоставить пользователю документацию о том, как работает моя программа, и чтобы пользователи моей программы могли предсказать, как она будет вести себя.

Я предполагаю, что JVM исследует некоторые переменные среды, но какие?

Ответы на вопрос(1)

Ваш ответ на вопрос