No OS X Lion, o LANG não está definido como UTF-8, como corrigi-lo?


148

Eu tento configurar o postgress no OS X Lion e acho que não está configurado corretamente a var do ambiente LOCALE.

Isto é o que está definido:

LANG=
LC_COLLATE="C"
LC_CTYPE="C"
LC_MESSAGES="C"
LC_MONETARY="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_ALL=

Espero algo com UTF-8. Esta é uma configuração limpa do OS X Lion, com o idioma espanhol. Eu não movo nada.

Não sei como configurá-lo para UTF-8.

Nas configurações do terminal, verifique UTF-8 e defina LOCALE em aberto, apesar de não funcionar.


2
Isso é estranho. Ele deve funcionar no Terminal por padrão, supondo que você esteja usando o shell padrão (bash) e o perfil de configurações padrão do terminal (Básico). Observe que, se você alterar a codificação ou alterar "definir variáveis ​​de ambiente do código de idioma", elas somente terão efeito em novos terminais, não nos que já estão abertos.
Página

Eu uso o zsh (usando oh meu instalador do zsh!), Talvez seja isso?
mamcx

Possivelmente. Tente executar o zsh sem nenhuma configuração personalizada para ver se o problema desaparece. Use Shell> Novo comando para executar zsh --no-rcse zsh --no-rcs --no-global-rcsdiminuir o problema. Além disso, tente executar o localecomando sem um shell via Novo Comando e veja o que ele relata.
31711 Chris Página

@ ChrisPage Eu tive exatamente a mesma saída do OP, com essas configurações ativadas no Terminal. Eu tive que set locale environment variablesdesligar, reiniciar o terminal e ligá-lo novamente para que o ambiente certo aparecesse.
Chris

Há uma resposta completa para essa pergunta no Ask Different .
starfry

Respostas:


311

Percebi exatamente o mesmo problema ao fazer logon em servidores executando o Red Hat a partir de uma máquina OSX Lion.

Tente adicionar ou editar o ~/.profilearquivo para exportar corretamente suas configurações de localidade ao iniciar uma nova sessão.

export LC_ALL=en_US.UTF-8  
export LANG=en_US.UTF-8

Essas duas linhas adicionadas ao arquivo devem ser suficientes para definir o código do idioma [substitua en_USo código do idioma desejado e verifique previamente se ele está realmente instalado no seu sistema ( locale -a)].

Depois disso, você pode iniciar uma nova sessão e verificar usando locale:

$ locale

O seguinte deve ser a saída:

LANG="en_US.UTF-8"  
LC_COLLATE="en_US.UTF-8"  
LC_CTYPE="en_US.UTF-8"  
LC_MESSAGES="en_US.UTF-8"  
LC_MONETARY="en_US.UTF-8"  
LC_NUMERIC="en_US.UTF-8"  
LC_TIME="en_US.UTF-8"  
LC_ALL="en_US.UTF-8"  

2
Além disso, notei originalmente o problema ao usar o iTerm2. Esta solução alternativa parece funcionar para o iTerm2 e o Terminal.
wormintrude

1
Passei uma hora procurando uma solução para esse assunto, muito obrigado por postar esse homem. Posso confirmar que funciona no Terminal e no iTerm2.
Mariano Cavallo

7
link inválido.
Vincent Sit

11
Eu tenho um .bash_profilena minha pasta pessoal e .profilenão estava sendo procurado quando .bash_profileestava presente. Eu precisava fonte manualmente .profiledentro.bash_profile
BrunoJCM 8/15

3
Incrível, que fez isso, apenas uma nota, uma vez que você usar zsh, não seja mudo como me ... a configuração não é ~/.zshrc... bem, agora funciona como um encanto
Redrick

20

Recentemente, tive o mesmo problema no OS X Sierra com o bash shell e, graças às respostas acima, só tive que editar o arquivo

~/.bash_profile 

e acrescente essas linhas

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

1
Isso realmente ajuda. Não tenho bash_profilee criei-o manualmente. E sem colocar exporta bash_profile, cada vez que reiniciar o terminal da língua desfaz.
Phan Van Linh

7

Este é um quebra-cabeças por um longo tempo. Agora vejo que é OSX .. eu mudo em todo o sistema e funciona perfeito

Quando adiciono isso, o LANG no Centos6 e no Fedora também é o meu LANG preferido. Você também pode "desmarcar" a exportação ou definir a localidade nas configurações do terminal (OSX) / etc / profile

exportar LC_ALL = en_US.UTF-8
exportar LANG = en_US.UTF-8


5

Se você tiver o zsh instalado, também poderá atualizar ~/.zprofilecom

if [[ -z "$LC_ALL" ]]; then
  export LC_ALL='en_US.UTF-8'
fi

e verifique a saída usando o localecmd como mostrado acima

❯ locale                                                                                                                                           
LANG="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_CTYPE="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_ALL="en_US.UTF-8"

0

Eu tive esse problema com o MacOS High Sierria.

Captura de tela 1

Você pode configurar o código de idioma e o idioma para o formato UTF-8 usando o comando abaixo:

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8

Captura de tela 2

Agora, para verificar se o ambiente de localidade está atualizado, use o comando abaixo:

Locale

Captura de tela 3


1
Qual é a diferença desta resposta em relação à aceita?
Denis V

2
Qual é o objetivo da primeira foto? Não é o mesmo que o último?
narengi
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.