Sous OS X Lion, LANG n'est pas défini sur UTF-8, comment y remédier?

148

J'essaie de configurer postgress dans OS X Lion, et je trouve que ce n'est pas correctement configuré l'environnement LOCALE var.

Voici ce qui est défini:

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

J'attends quelque chose avec UTF-8. Il s'agit d'une configuration OS X Lion propre, avec la langue espagnole. Je ne bouge rien.

Je ne sais pas comment le configurer en UTF-8.

Dans les paramètres du terminal, cochez UTF-8 et définissez LOCALE sur ouvert, même si cela ne fonctionne pas.

mamcx
la source
2
C'est étrange. Cela devrait fonctionner dans Terminal par défaut, en supposant que vous utilisez le shell par défaut (bash) et le profil de paramètres de terminal par défaut (Basic). Notez que si vous modifiez le codage ou changez "définir les variables d'environnement locales", elles ne prendront effet que dans les nouveaux terminaux, pas ceux qui sont déjà ouverts.
Chris Page
J'utilise zsh (en utilisant le programme d'installation oh my zsh!), C'est peut-être ça?
mamcx
Peut-être. Essayez d'exécuter zsh sans configuration personnalisée pour voir si le problème disparaît. Utilisez Shell> Nouvelle commande pour exécuter zsh --no-rcset zsh --no-rcs --no-global-rcsaffiner le problème. Aussi, essayez simplement d'exécuter la localecommande sans shell via Nouvelle commande et voyez ce qu'elle rapporte.
Chris Page
@ChrisPage J'avais exactement la même sortie que l'OP, avec ces paramètres activés dans le terminal. J'ai dû set locale environment variableséteindre, redémarrer le terminal, puis le rallumer pour que le bon environnement apparaisse.
Chris
Il y a une réponse complète à cette question sur Ask Different .
starfry

Réponses:

311

J'ai remarqué exactement le même problème lors de la connexion à des serveurs exécutant Red Hat à partir d'une machine OSX Lion.

Essayez d'ajouter ou de modifier le ~/.profilefichier pour qu'il exporte correctement vos paramètres régionaux lors du lancement d'une nouvelle session.

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

Ces deux lignes ajoutées au fichier devraient suffire pour définir la locale [remplacez en_USla locale souhaitée, et vérifiez au préalable qu'elle est bien installée sur votre système ( locale -a)].

Après cela, vous pouvez démarrer une nouvelle session et vérifier en utilisant locale:

$ locale

Ce qui suit devrait être la sortie:

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"  
wormintrude
la source
2
De plus, j'ai initialement remarqué le problème lors de l'utilisation d'iTerm2. Cette solution de contournement semble fonctionner à la fois pour iTerm2 et Terminal.
wormintrude
1
J'ai passé une heure à chercher une solution à ce problème, merci beaucoup d'avoir posté cet homme. Je peux confirmer que cela fonctionne à la fois sur le terminal et sur iTerm2.
Mariano Cavallo
7
le lien n'est pas valide.
Vincent Sit
11
J'ai un .bash_profilesur mon dossier personnel et je .profilen'étais pas source quand j'étais .bash_profileprésent. J'avais besoin de source manuellement à l' .profileintérieur.bash_profile
BrunoJCM
3
Incroyable, ça l'a fait, juste une note, une fois que vous utilisez zsh, ne soyez pas stupide comme moi ... la configuration existe ~/.zshrc... et bien maintenant fonctionne comme un charme
Redrick
20

J'ai récemment eu le même problème sur OS X Sierra avec bash shell, et grâce aux réponses ci-dessus, je n'ai eu qu'à éditer le fichier

~/.bash_profile 

et ajoutez ces lignes

export LC_ALL=en_US.UTF-8
export LANG=en_US.UTF-8
FredericK
la source
1
Cela aide vraiment. Je n'ai pas bash_profileet je l'ai créé manuellement. Et sans mettre exportà bash_profilechaque fois que nous réinitialiser la borne la langue sera rollback.
Phan Van Linh
7

C'est un casse-tête depuis longtemps. Je vois maintenant que c'est OSX .. Je le change à l'échelle du système et cela fonctionne parfaitement

Quand j'ajoute cela, le LANG dans Centos6 et Fedora est également mon LANG préféré. Vous pouvez également "décocher" l'exportation ou définir les paramètres régionaux dans les paramètres du terminal (OSX) / etc / profile

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

Marcel Kraan
la source
5

si zsh est installé, vous pouvez également mettre ~/.zprofileà jour avec

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

et vérifiez la sortie en utilisant la localecmd comme indiqué ci-dessus

❯ 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"
Milland
la source
0

J'ai eu ce problème avec MacOS High Sierria.

Capture d'écran 1

Vous pouvez configurer les paramètres régionaux ainsi que la langue au format UTF-8 en utilisant la commande ci-dessous:

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

Capture d'écran 2

Maintenant, pour vérifier si l'environnement local est mis à jour, utilisez la commande ci-dessous:

Locale

Capture d'écran 3

Jayprakash Dubey
la source
1
En quoi cette réponse est-elle différente de celle acceptée?
Denis V
2
Quel est le but de la première photo? N'est-ce pas le même que le dernier?
narengi