Terminal.app et les caractères unicode européens

Ce billet date de plusieurs années, ses informations peuvent être devenues obsolètes.

WTF avec les caractères accentués dans Terminal.app sous OS X 10.4.7 ?

A priori nous avons un problème avec les caractères multi-octets. Si votre Terminal.app est configuré avec un encodage du jeu de caractères en Unicode (UTF-8) (config par défaut il me semble), quand vous entrez un caractère é vous obtenez \303\251. Oh comme c'est moche. Pourtant c'est bien de l'unicode mais affiché en valeur octale. En passant voici deux liens très utiles ponctuellement : utf8-decoder et character-identifier. A ce stade, si je créé un répertoire \303\251t\303\251 sur mon bureau je retrouve bien un dossier été. Pas top top. Alors il est vrai que l'emploi de caractères accentués, d'espaces etc dans les noms de fichiers est déconseillé mais bon, la vraie vie c'est différent :-p

En cherchant une solution je suis tombé sur la discussion "Terminal.app and the European Unicode characters?" qui propose un ensemble de solutions pour remédier à ce problème. Voici les choses à faire pour afficher tout ça de manière correcte.

La première étape est d'éditer le fichier ~/.bash_profile et d'y ajouter les lignes suivantes :

export LC_ALL=fr_FR.UTF-8
export LC_CTYPE=fr_FR.UTF-8
export LANG=fr_FR.UTF-8

La deuxième étape est de créer ou éditer le fichier ~/.inputrc et d'y ajouter :

# Turns off 8th bit stripping
set convert-meta off

# Enable 8bit input
set input-meta on

# Keep the 8th bit for display
set output-meta on

Plus d'infos sur .inputrc dans la section Creating the /etc/inputrc File de Linux From Scratch. Yeah !

La troisième étape, c'est d'aller modifier les préférences de la fenêtre de Terminal.app via Terminal > Réglages de la fenêtre > Émulation > Éviter les caractères non ASCII et de décocher cette case.

Maintenant ça marche... presque. Si vous tapez un é puis la touche d'effacement ou la flèche droite par exemple, il y a encore des comportements che-lou.

La seule astuce que j'ai aujourd'hui est d'ouvrir une fenêtre de terminal et d'y re-lancer un bash et là, tout à l'air nickel. Si vous avez un meilleur truc, merci de commenter.

Voila, c'est tout. Maintenant j'arrête les trucs de geek et je repasse sous Photoshop. Et n'oubliez pas, avoir un Terminal qui fonctionne bien, ça sert aussi à éviter les railleries des collègues ;-)

Edit : la version de Bash disponible sous OS X est la 2.05b.0(1)-release et ça c'est un truc de ouf ! Installer une version plus récente de Bash résout le problème. Pour ce faire le plus simple est d'utiliser DarwinPorts. Il est préférable d'avoir installé au préalable les Developer Tools histoire d'avoir un compilateur C sur sa machine. Une fois que vous avez récupéré une version récente de Bash, y a plus qu'à dire à OSX quel shell utiliser par défaut dans Terminal.app, w00t !

#1 anonyme

15/08/2006 02:29

Merci ! C'est exactement l'information que je cherchais.

Avant Dotclear2.com Après La blogosphere m'a tuer

Tag Kemar Joint