Como definir LANG no código do idioma, apesar de estar em / etc / default / locale no ubuntu para suporte ao unicode?

8

Eu corro Ubuntu 12.04, não consigo definir o código do idioma en_US.utf8. Eu defino o LANGconfigurando /etc/default/localeconforme descrito aqui .

$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

Mas isso não funciona, como você pode ver acima. Como faço para definir essa LANGvariável en_US.utf8?

A razão pela qual estou perguntando é que, quando executo echo -e "\x03\bb", a unicode greek letter lambda symbolexibição é exibida corretamente, mas meu problema é com o emacs. No emacs, não consigo exibir símbolos unicode, por exemplo: C-x 8 RET 03bboutputs \u03bb, em vez de a greek letter lambda symbol. Eu pensei que o problema era com essas configurações de localidade, mas não posso defini-las.

Edit : Eu acho que o problema está resolvido.

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

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

A solução para mim foi, eu estava usando mintty para ssh Ubuntu 12.04 Server Edition, então tive que configurar ~/.pam_environmente ~/.etc/ssh_config, e ~/bashrc. Mas o meu verdadeiro problema com o emacs não era sobre essa configuração do ubuntu, então não tenho idéia para que LANGserve essa configuração de variável ou se a defino para corrigir valores.

Edit 2: Aqui estão os passos que eu tomei para resolver isso, seguindo as sugestões do ansivirus do canal #ubuntu irc:

Adicione isto a ~/.bash_profile

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

Adicione isso a ~/.pam_environment(portanto, isso deve ser problemático)

LANG=en_US
LANGUAGE=en_US

Adicione isto a /etc/ssh/sshd_config

UsePAM yes

Comente isso em /etc/ssh/ssh_config

#   SendEnv LANG LC_*
user3995789
fonte
Qual é a saída de su $USER -c 'env; echo ==; locale' | egrep '==|LANG'? Você está usando o ambiente GUI padrão (Unity), se não o que está usando e qual gerenciador de exibição?
Gilles 'SO- stop be evil'
Está LANGpresente quando você executa, sumas não quando faz logon no SSH? O que você mudou? Observe que en_USnão é um código de idioma Unicode.
Gilles 'SO- stop be evil'
@ Gilles, veja meu edit2 por favor. Depois de tomar essas medidas agora, acho que o LANG está presente, mas não sei qual o efeito que ele tem, e não me importo porque o emacs é fixo e posso ver os caracteres unicode bem, gostaria de receber uma explicação sobre o que essas variáveis ​​significam e o que elas afetam, obrigado.
user3995789
Observe também que estes não corrigiram o problema do emacs, afinal, era um problema do emacs.
user3995789
1
Talvez relacionadas com: A grafia correta para a localidade é AFAIK en_US.UTF-8, não .utf8
Jan Henke

Respostas:

1

Tente reinstalar locales

apt-get install --reinstall locales

Leia mais aqui .

Володимир Вонс
fonte