web-dev-qa-db-fra.com

Problèmes avec le terminal OS X UTF-8

D'accord, je me suis finalement procuré un MacBook Air après 15 ans de Linux. Et avant de l'obtenir, ma grande préoccupation était le support UTF-8 parce que peu importe si je reçois des fichiers depuis Windows ou des clients mac, il y a toujours des problèmes d'encodage, tandis que sur ubuntu, je peux être sûr que toutes les sorties quel que soit le programme produire des données encodées utf-8 parfaites.

Et maintenant, mon deuxième jour (aujourd'hui) avec OS X, je me déchire les cheveux par frustration. Pourquoi?

Lorsque j'ouvre Nano et que je tape des caractères suédois comme ÅÄÖ dedans, il met des caractères vides à la fin de la ligne (qui, je suppose, est l'autre octet de chaque caractère)

Lorsque j'ouvre python et que j'essaie d'utiliser des caractères suédois, il ne produit rien du tout

Lorsque je me connecte à un serveur Ubuntu via SSH, je ne peux pas taper åäö en bash, difficile cela fonctionne en VIM (toujours via SSH). Et dans nano backspace ne fonctionne pas, mais si cochez la case " Supprimer envoie ctrl + H "dans les préférences du terminal, le retour arrière commence à fonctionner dans nano mais cesse de fonctionner dans VIM.

J'ai essayé de décocher tous les autres encodages puis UTF-8 dans les préférences du terminal mais cela ne semble pas fonctionner non plus.

Je suis sûr que chaque personne non américaine doit avoir les mêmes problèmes, alors comment puis-je les résoudre? Je veux juste un support UTF-8 complet ...: '(

43
Sami

Pour moi, cela a aidé: j'ai vérifié les paramètres régionaux sur mon shell local dans le terminal

$ locale
LANG="cs_CZ.UTF-8"
LC_COLLATE="cs_CZ.UTF-8"

Ensuite, connecté à n'importe quel hôte distant que j'utilise via ssh et édité le fichier/etc/profile en tant que root - à la fin, j'ai ajouté la ligne:

export LANG=cs_CZ.UTF-8

Après la prochaine connexion, cela fonctionne très bien en bash, ls et nano.

38
angeldust

Allez dans Terminal -> Preferences -> Advanced (Tab) descendez dans International et sélectionnez Unicode (UTF-8) comme Character Encoding.

Et cochez Set locale environment variables on startup.

17
ismail

Malheureusement, la boîte de dialogue Préférences n'est pas toujours très utile, mais en peaufinant, vous devriez pouvoir tout faire fonctionner.

Pour pouvoir taper des caractères suédois dans Terminal, ajoutez les lignes suivantes à votre ~/.inputrc (vous devez probablement créer ce fichier):

set input-meta on
set output-meta on
set convert-meta off

Cela devrait faire le travail à la fois avec utf8 et d'autres codages dans bash, nano et de nombreux autres programmes. Certains programmes, comme tmux, dépendent également de locale. Ensuite, en ajoutant par exemple export LC_ALL=en_US.UTF-8 à ton ~/.profile le fichier devrait aider, mais gardez à l'esprit que quelques programmes (principalement obscurs) nécessitent des paramètres régionaux standard, donc si vous avez des problèmes pour exécuter ou compiler un programme, essayez de revenir à LC_ALL=C.

Quelques références qui peuvent être utiles:

16
danmichaelo

Ce qui suit est un résumé de ce que vous devez faire sous OS X Mavericks (10.9). Tout cela est résumé dans

http://hints.macworld.com/article.php?story=20060825071728278

  1. Allez dans Terminal-> Préférences-> Paramètres-> Avancé.

    Sous International , assurez-vous que le codage des caractères est défini sur Unicode (UTF-8).

    En outre, et c'est la clé: sous Emulation , assurez-vous que Échappez à l'entrée non ASCII avec Control-V est non cochée (ie pas set).

    Ces deux paramètres corrigent les choses pour Terminal.

  2. Assurez-vous que vos paramètres régionaux sont définis sur quelque chose qui se termine par .UTF-8. Tapez locale et regardez le LC_CTYPE ligne. S'il ne dit pas quelque chose comme en_US.UTF-8 (ce qui précède le point peut changer si vous utilisez un environnement local autre que l'anglais américain), puis dans votre Bash .profile ou .bashrc dans votre répertoire personnel, ajoutez une ligne comme celle-ci:

    export LC_CTYPE=en_US.UTF-8
    

    Cela corrigera les choses pour les programmes de ligne de commande en général.

  3. Ajoutez les lignes suivantes à .inputrc dans votre répertoire personnel (créez-le si nécessaire):

    set meta-flag on
    set input-meta on
    set output-meta on
    set convert-meta off
    

    Cela rend Bash propre à huit bits, il passera donc des caractères UTF-8 à l'intérieur et à l'extérieur sans les déranger.

N'oubliez pas que vous devrez redémarrer Bash (par exemple, fermer et rouvrir la fenêtre du terminal) pour qu'il prenne en compte tous les paramètres que vous avez définis en 2 et 3 ci-dessus.

13
Urban Vagabond

Réponse courte et polyvalente (s'adapte à d'autres langues nationales, même le lituanien ou le russe)

  • terminal ouvert
  • modifier .profile dans home direkctory - nano .profile
  • ajouter une ligne export LC_ALL=en_US.UTF-8
  • appuyez sur Ctrl + x et Y (quitter et enregistrer)

Cela a résolu pour moi même des caractères nationaux rares de petits pays. Vous devrez peut-être fermer et ouvrir Terminal pour que les modifications soient effectives.

De plus, si vous aimez le comportement Linux (utilisez beaucoup de raccourcis Alt comme Alt +. Ou Alt +, en mc), vous devez désactiver la fonction de touche Option de style Mac: Terminal-> Préférences-> Profils-> Clavier et case à cocher: Use Option as Meta key

9
Arunas Bartisius

Mon terminal agissait simplement comme un idiot, n'imprimait pas åäö. J'ai trouvé (et défini) ce paramètre: enter image description here

En dessous de Terminal -> Preferences... -> Profiles -> Advanced.

Semble avoir résolu mon problème.

5
azzid

Pour que nano fonctionne comme vous le souhaitez, essayez:

export LANG="UTF-8"

Ou obtenez une version plus récente de nano via MacPorts:

# cf. http://www.macports.org/install.php
port info nano
port variants nano
Sudo port install nano +utf8 +color +no_wrap

En ce qui concerne les problèmes ssh et UTF-8, commentez SendEnv LANG LC_* dans /etc/ssh_config.

Voir: Terminal sous OS X Lion: impossible d'écrire åäö sur une machine distante

5
virtuz

Vérifiez si nano a bien été construit avec le support UTF-8, en utilisant nano --version. Le voici sur Cygwin:

nano --version
 GNU nano version 2.2.5 (compiled 21:04:20, Nov  3 2010)
 (C) 1999, 2000, 2001, 2002, 2003, 2004, 2005, 2006, 2007,
 2008, 2009 Free Software Foundation, Inc.
 Email: [email protected]    Web: http://www.nano-editor.org/
 Compiled options: --enable-color --enable-extra --enable-multibuffer
 --enable-nanorc --enable-utf8

Notez le dernier bit.

3
ak2

Puisque nano est une application terminale. Je suppose que c'est plus un problème terminal qu'un problème nano.

J'ai rencontré des problèmes similaires sous OS X (je ne peux pas saisir et afficher les caractères chinois sur le terminal).

J'ai essayé de modifier les paramètres du système via l'interface utilisateur OS X dont le véritable effet est de changer la variable d'environnement LANG.

Donc, finalement, j'ajoute juste quelques trucs dans le ~/.bashrc pour résoudre le problème.

# I'm Chinese and I prefer English manual
export LC_COLLATE="zh_CN.UTF-8"
export LC_CTYPE="zh_CN.UTF-8"
export LC_MESSAGES="en_US.UTF-8"
export LC_MONETARY="zh_CN.UTF-8"
export LC_NUMERIC="zh_CN.UTF-8"
export LC_TIME="zh_CN.UTF-8"

BTW, ne définissez pas LC_ALL qui remplacera tous les autres paramètres LC_ *.

1
chen bin

Essayer

  1. Avoir une police compatible Powerline installée https://github.com/powerline/fonts
  2. Définition de ces vars ENV dans .zshrc ou .bashrc:
 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
Dmitriy

Dans mon cas, l'utilisation de la commande uxterm au lieu de xterm a résolu le problème. Il est disponible en /opt/X11/bin/uxterm en installant le package XQuartz fourni par Apple.

0
Jay