2009-12-01 3 views
5

При попытке следующее в Java:Кодировка cp1252

System.out.println(System.getProperty("file.encoding"));

cp1252 я как кодирование.

Есть ли способ узнать, откуда это значение? (Как переменные среды или что-то еще)

Я хотел бы напечатать значение кодировки в командной строке, используя некоторую команду, такую ​​как systeminfo в Windows XP.

+0

Возможно, соответствующая информация находится по адресу http://stackoverflow.com/questions/1336930/how-do-you-define-a-java-file-encoding-value-compatible-with-the-under-wind –

+0

только fyi, http://cp1252.com есть информация о вдовцах codepage 1252 –

ответ

-1

Я считаю, что эта кодировка устанавливается JVM, так что не имеет смысла, чтобы получить его от внешнего

+0

Нет, это нет, это кодировка Windows для инструментов командной строки –

+1

Kico: Нет, это не так. Кодовая страница, используемая в командной строке, все еще отличается. – Joey

3

Этого значения, на Windows, по крайней мере, наследие кодовое используются для текста, не Unicode. Это то, что ОС конвертирует строки в и из, когда вы используете старые API ANSI. Для любой более новой программы это должно быть не имеют эффекта (при этом я до сих пор вижу достаточно программ, которые используют варианты A, а не W функций API, к сожалению).

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

Для командной строки, однако, эта кодировка не имеет существенного значения, поскольку консоль по умолчанию использует OEM-кодирование, которое имитирует один из возрастов DOS (850 или 437 довольно распространено).

5

cp1252 является кодировкой по умолчанию на английских установках MS Windows (что Microsoft относится к ANSI). Java по умолчанию будет использовать системный язык в качестве кодировки по умолчанию. Это означает, что это зависит от системы. В общем, я не люблю полагаться на кодировки по умолчанию. Если я знаю, что мой текст будет чистым ASCII, я его игнорирую, иначе я задал кодировку явно при создании экземпляров InputStreamReader, OutputStreamWriter, String и т. Д. Или по телефону getBytes.

Обратите внимание, что cp1252 является не кодировкой по умолчанию в командной строке Windows. Это еще более старый cp437, который вы можете увидеть (и изменить) с помощью команды chcp.

1

Так как это на самом деле не имеет ничего общего с Java, вы можете просто выбрать, чтобы использовать WSH скрипт:

' save this script as printANSI.vbs 
' usage: cscript /Nologo printANSI.vbs 
Set objShell = CreateObject("WScript.Shell") 
cp = objShell.RegRead("HKEY_LOCAL_MACHINE\SYSTEM\ControlSet001" &_ 
           "\Control\Nls\CodePage\ACP") 
WScript.Echo cp 

Смотри также команда chcp; вы можете прочитать, как работает кодировка в командной строке Windows (some links in this blog post).

+0

спасибо mcdowell, это было полезно – Arun

0

Насколько я понял, это кодировка вашего исходного файла java, ваш результат изменится после изменения его кодировки текстового файла. На eclipse измените его из свойства Resource (Alt + Enter или щелкните правой кнопкой мыши на этом файле, перейдите в Resource). Измените кодировку текстового файла с cp1252 на что-то еще, скажем, UTF-8, woo ... Ваш результат больше не будет cp1252.

Смежные вопросы