2010-04-22 3 views
1

Есть ли способ определить кодировку символов, установленную в терминале, который вызывает мою программу Java? В Windows я могу вызвать инструмент «chcp» и проанализировать вывод.Как определить кодировку символов терминала Unix?

Но как насчет Linux или Mac?

+0

@Epage обновил мой ответ – stacker

ответ

2

Проверьте страницу locale(1) человек

Вы можете изменить это, установив в LANG переменной

$ export LANG=en_US.iso88591 

$ locale 
LANG=en_US.iso88591 
LC_CTYPE="en_US.iso88591" 
LC_NUMERIC="en_US.iso88591" 
LC_TIME="en_US.iso88591" 
LC_COLLATE="en_US.iso88591" 
LC_MONETARY="en_US.iso88591" 
LC_MESSAGES="en_US.iso88591" 
LC_PAPER="en_US.iso88591" 
LC_NAME="en_US.iso88591" 
LC_ADDRESS="en_US.iso88591" 
LC_TELEPHONE="en_US.iso88591" 
LC_MEASUREMENT="en_US.iso88591" 

LC_IDENTIFICATION = «en_US.iso88591»

+0

Лучше, чем ничего ... Проблема в том, что локаль дает тот же результат даже после изменения кодировки терминала ... он просто дает консольную кодировку по умолчанию для новых консолей ... – Epaga

1

Там не определен канал связи от терминала приложение к процессам, выполняющимся внутри окна терминала (меньше тех, которые определены эмулятором терминала, например, изменения размера окна). Это было бы справедливо и для любых других Unix-подобных ОС. Переменные среды могут быть унаследованы только при запуске процесса. Рассмотрение значений этих переменных среды - это все, что вы можете сделать.

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

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