Frage Wie man den UTF-8 mit dem 'less' Befehl handhabt?


Auf meinem Mac-Terminal funktioniert das Drucken von UTF-8 im Allgemeinen, aber das less funktioniert nicht richtig.

Das funktioniert also richtig:

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

aber wenn man es in weniger steckt, ergibt sich folgendes:

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

Wie kann das behoben werden?

Für die Diagnose:

Ich benutze Mac OS 10.6.8. weniger Version 418, Terminal 2.1.2 (273.1).

Die Ausgabe meines Gebiets ist dies:

$ 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"

27
2017-08-06 16:49


Ursprung




Antworten:


Okay, ich fand die Antwort nach einigem googeln. Offenbar, LESSCHARSET muss so eingestellt werden:

export LESSCHARSET=utf-8

Jetzt less funktioniert gut für mich.


37
2017-08-06 16:58



Ich hatte das gleiche Problem auf CentOS. Diese Linie hat es auch dort repariert. - Wim Deblauwe
Für mich löste das Problem die Verwendung less -r (Anzeige "roher" Steuerzeichen) - waldyrious
Dies funktioniert auch in Debian 8, danke! - lucaferrario
Jemand sollte diese Antwort akzeptieren! Es löst das Problem. - lensovet
less -r macht das selbe aber auch emojis richtig, was export LESSCHARSET=utf-8 nicht. - Noah Sussman


Wenn Sie einige Unicode-Zeichen sehen können less, aber sind nicht in der Lage zu bekommen less Um Emoji anzuzeigen, versuchen Sie es mit einem Upgrade less zu einer neueren Version. Unter Mac OS X ging ich von Version 458 auf 481, und das behob mein Problem (z. B. git log kann jetzt Emoji in Commit-Nachrichten anzeigen).

Wenn Sie Homebrew haben, können Sie das System weniger durch eine neuere Version ersetzen, indem Sie es ausführen brew install homebrew/dupes/less.


6
2018-06-19 18:28



Vielen Dank! Mit neueren Versionen von Homebrew müssen Sie nur brew install less um das Upgrade zu bekommen. - Alex Ciminian


Funktioniert für mich mit

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"

2
2017-08-06 16:56



LC_CTYPE ist wichtig. Allerdings sind die Regeln weniger Verwendungen bizarr: anstatt die Codierung aus dem Gebietsschema abzurufen, sucht sie nach der Zeichenkette "utf-8" (oder ein paar anderen Möglichkeiten) in ihrem Namen.So müssen Sie LESSCHARSET verwenden, wenn Sie welche möchten andere Kodierung oder wenn Ihr Gebietsschema-Name nicht den Vorurteilen von Less entspricht. - Richard Kettlewell


Ich habe das gegoogelt und die folgenden Umgebungsvariablen ausprobiert, die für mich funktionierten:

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

Da ich die LC_ALL in mehreren verschiedenen Antworten finde, denke ich, dass dies die richtige ist. Aber vielleicht nicht die einzig richtige Antwort, es könnte natürlich richtigere Antworten auf diese Frage geben.

Jedenfalls gab mir etwas mehr Googlen diese Beschreibung für die Variable:

LC_ALL   Diese Variable bestimmt die Werte für alle Gebietsschema-Kategorien.   Der Wert der Umgebungsvariablen LC_ALL hat Vorrang vor allen anderen   der anderen Umgebungsvariablen beginnend mit LC_ (LC_COLLATE,   LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) und der LANG   Umgebungsvariable.

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

Führt mich zu denken, dass dies die Sprachvariable ist, um sie alle zu beherrschen :)


1
2017-11-05 15:45



Bitte zögern Sie nicht zu posten less' Versionsnummer. - Deer Hunter
sicher, weniger 458 (GNU reguläre Ausdrücke) - Melvin Loos


Aktualisiere dich einfach [less][1]

Mach es mit brauen.

brew install homebrew/core/less

0
2018-05-04 23:22