42 votes

Comment faire en sorte que la commande 'less' gère l'UTF-8 ?

Sur mon terminal Mac, l'impression de l'UTF-8 fonctionne en général, mais l'impression de l'UTF-8 ne fonctionne pas. less ne fonctionne pas correctement.

Donc cela fonctionne correctement :

$  echo -e '\xe2\x82\xac'   
€

mais en le mettant dans less donne quelque chose comme ça :

$  echo -e '\xe2\x82\xac' | less  
<E2><82><AC>

Comment peut-on y remédier ?

Pour les diagnostics :

J'utilise Mac OS 10.6.8. moins la version 418, Terminal 2.1.2 (273.1).

La sortie de ma locale est la suivante :

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

60voto

Dave Nolan Points 2280

Ok, j'ai trouvé la réponse après quelques recherches sur Google. Apparemment, LESSCHARSET doit être défini comme suit :

export LESSCHARSET=utf-8

Maintenant less fonctionne bien pour moi.

6voto

Luke Francl Points 161

Si vous pouvez voir certains caractères unicode dans less mais ne parviennent pas à obtenir less pour afficher les emoji, essayez de mettre à niveau less à une version plus récente. Sur Mac OS X, je suis passé de la version 458 à 481 et cela a réglé mon problème (par exemple, git log peut désormais afficher des emoji dans les messages commit).

Si vous avez un homebrew, vous pouvez remplacer le système moins avec une version plus récente en exécutant brew install homebrew/dupes/less .

2voto

topdog Points 3490

Cela fonctionne pour moi avec

LANG=
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"

2voto

Melvin Loos Points 11

J'ai cherché sur Google et essayé les variables d'environnement suivantes, qui ont fonctionné pour moi :

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

Vu que je trouve le LC_ALL dans plusieurs réponses différentes, je pense que c'est la bonne. Mais peut-être pas la seule bonne réponse, il pourrait bien sûr y avoir d'autres réponses correctes à cette question.

Quoi qu'il en soit, en cherchant un peu plus sur Google, j'ai trouvé cette description de la variable :

LC_ALL Cette variable détermine les valeurs de toutes les catégories de paramètres linguistiques. La valeur de la variable d'environnement LC_ALL est prioritaire sur toute des autres variables d'environnement commençant par LC_ (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) et la variable d'environnement LANG et la variable d'environnement LANG.

source : http://pubs.opengroup.org/onlinepubs/007908799/xbd/envvar.html

Ce qui m'amène à penser que c'est la variable linguistique qui les gouverne toutes :)

0voto

Ahmad Awais Points 111

Juste pour vous mettre à jour [less][1]

Faites-le avec de la bière.

brew install homebrew/core/less

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X