Как установить LANG в локали, несмотря на то, что он находится в / etc / default / locale в ubuntu для поддержки юникода?

8

Я бегу Ubuntu 12.04, я не могу установить язык en_US.utf8. Я установил LANG, настроив, /etc/default/localeкак описано здесь .

$cat /etc/default/locale
LANG=en_US.utf8
$locale
LANG=
LANGUAGE=
LC_CTYPE="POSIX"
LC_NUMERIC="POSIX"
LC_TIME="POSIX"
LC_COLLATE="POSIX"
LC_MONETARY="POSIX"
LC_MESSAGES="POSIX"
LC_PAPER="POSIX"
LC_NAME="POSIX"
LC_ADDRESS="POSIX"
LC_TELEPHONE="POSIX"
LC_MEASUREMENT="POSIX"
LC_IDENTIFICATION="POSIX"
LC_ALL=POSIX

Но это не работает, как вы можете видеть выше. Как мне установить эту LANGпеременную в en_US.utf8?

Причина, по которой я спрашиваю, заключается в том, что при запуске у echo -e "\x03\bb"меня unicode greek letter lambda symbolотображается корректно, но моя проблема связана с emacs. В emacs я не могу отображать символы юникода, например: C-x 8 RET 03bboutput \u03bbвместо a greek letter lambda symbol. Я думал, что проблема с этими настройками локали, но я не могу установить их.

Редактировать : я думаю, что проблема исправлена.

$su $USER -c 'env; echo ==; locale' | egrep '==|LANG'

LANG=en_US
LANGUAGE=en_US
==
LANG=en_US
LANGUAGE=en_US

Решение для меня было, я использовал mintty для SSH Ubuntu 12.04 Server Edition, поэтому мне пришлось настроить ~/.pam_environmentи ~/.etc/ssh_config, и ~/bashrc. Но моя настоящая проблема с emacs была не в этой конфигурации Ubuntu, поэтому я понятия не имею, для чего используется эта LANGпеременная конфигурация или я установил ее на правильные значения.

Изменить 2: Вот шаги, которые я предпринял, чтобы решить эту проблему, следуя советам по антивирусной программе из канала #ubuntu irc:

Добавьте это к ~/.bash_profile

export LANGUAGE="en"
export LANG="C"
export LC_MESSAGES="C"

Добавьте это к ~/.pam_environment(так что это должно быть проблематично)

LANG=en_US
LANGUAGE=en_US

Добавьте это к /etc/ssh/sshd_config

UsePAM yes

Закомментируйте это в /etc/ssh/ssh_config

#   SendEnv LANG LC_*
user3995789
источник
Какой выход su $USER -c 'env; echo ==; locale' | egrep '==|LANG'? Используете ли вы среду графического интерфейса по умолчанию (Unity), если не то, что вы используете, и какой менеджер дисплея?
Жиль "ТАК - перестань быть злым"
Является ли LANGприсутствовать при запуске , suно не тогда , когда вы войти через SSH тогда? Что ты изменил? Обратите внимание, что en_USэто не локаль Unicode.
Жиль "ТАК - перестань быть злым"
@ Жиль, см. Мой edit2, пожалуйста. После того, как я предпринял эти шаги, я думаю, что LANG уже присутствует, но я не знаю, как это повлияет, и мне все равно, потому что emacs исправлен, и я хорошо вижу символы Юникода, я был бы признателен за объяснение эти переменные означают и на что они влияют, хотя, спасибо.
user3995789
Также обратите внимание, что это не решило мою проблему с Emacs, это была проблема с Emacs.
user3995789
1
Может быть связано с: Правильным написанием для локали является AFAIK en_US.UTF-8, а не .utf8
Ян Хенке

Ответы:

1

Попробуй переустановить locales

apt-get install --reinstall locales

Узнайте больше здесь .

Володимир Вонс
источник