Подтвердить что ты не робот

Java: платформа по умолчанию для платформы на разных платформах?

Некоторые устаревшие коды полагаются на кодировку платформы по умолчанию для переводов. Для Windows и Linux в "западном мире" я знаю, что это значит. Но, думая о российских или азиатских платформах, я совершенно не уверен, что их кодировка по умолчанию для платформы (только UTF-16?).

Поэтому я хотел бы знать, что я получу при выполнении следующей строки кода:

System.out.println("Default Charset=" + Charset.defaultCharset());

Edit: Я не хочу обсуждать проблемы кодировок и их различия с unicode здесь. Я просто хочу собрать, какие операционные системы приведут к какой-то конкретной кодировке. Пожалуйста, публикуйте только конкретные значения!

4b9b3361

Ответ 1

Это настраиваемая пользователем настройка. На многих современных Linux-системах это UTF-8. На Mac, его MacRoman. В США на Windows это часто CP1250, в Европе это CP1252. В Китае вы часто находите упрощенный китайский (Big5 или GB *).

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

См. этот ответ, как это сделать. Я предлагаю поместить это в небольшой script, который запускает ваше приложение, поэтому пользовательский по умолчанию не испорчен.

Ответ 2

Для установки Windows и Linux в "западном мире" я знаю, что это значит.

Вероятно, не так хорошо, как вы думаете.

Но, думая о российских или азиатских платформах, я совершенно не уверен, что их кодировка по умолчанию для платформы

Обычно, любая кодировка исторически используется в их стране.

(только UTF-16?).

Скорее всего, нет. Использование компьютера широко распространилось до того, как существовал стандарт Unicode, и каждая языковая область разработала один или несколько кодировок, которые могли бы поддерживать его язык. Те, кто нуждался в менее чем 128 символах вне ASCII, обычно разрабатывали "расширенный ASCII", многие из которых в конечном итоге были стандартизированы как ISO-8859, тогда как другие разработали двухбайтовые кодировки, часто несколько конкурирующих. Например, в Японии электронные письма обычно используют JIS, но веб-страницы используют Shift-JIS, а некоторые приложения используют EUC-JP. Любые из них могут встречаться как кодировка по умолчанию платформы в Java.

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