'Daha az' komutunun UTF-8'i nasıl yönetirim?


31

Mac terminalimde, UTF-8'i yazdırmak genel olarak çalışıyor, ancak lessdoğru çalışmıyor.

Yani bu doğru çalışıyor:

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

ancak daha az boruya böyle bir şey verir:

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

Bu nasıl düzeltilebilir?

Teşhis için:

Mac OS 10.6.8 kullanıyorum. daha az sürüm 418, Terminal 2.1.2 (273.1).

Yerel ayarımın çıktısı şudur:

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

Yanıtlar:


43

Tamam, cevabı biraz googling yaptıktan sonra buldum. Görünüşe göre, LESSCHARSETböyle ayarlanması gerekiyor:

export LESSCHARSET=utf-8

Şimdi lessbenim için iyi çalışıyor.


CentOS'ta da aynı problem vardı. Bu hat da orada düzeltti.
Wim Deblauwe

9
Benim için problemi çözen şey less -r(ekran "ham" kontrol karakterlerini göstermekti)
waldyrious

Bu Debian 8'de de çalışıyor, teşekkürler!
lucaferrario

Birisi bu cevabı kabul etmeli! Sorunu çözer.
lensovet,

2
less -raynı şeyi yapar, aynı zamanda emojiyi de doğru şekilde idare eder export LESSCHARSET=utf-8.
Noah Sussman

6

İçinde bazı unicode karakterler görebiliyor lessancak lessemoji'yi görüntüleyemiyorsanız, lessdaha yeni bir sürüme yükseltmeyi deneyin . Mac OS X'te, sürüm 458'den 481'e gittim ve bu sorunumu çözdü (örneğin, git logartık emojiyi taahhüt mesajlarında görüntüleyebilir).

Homebrew'iniz varsa, çalıştırarak sistemi daha az yeni bir sürümle değiştirebilirsiniz brew install homebrew/dupes/less.


Teşekkürler! Daha yeni homebrew sürümleriyle brew install less, yükseltmeyi edinmeniz yeterlidir .
Alex Ciminian

2

Benim için çalışıyor

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"

3
LC_CTYPE önemli olanıdır. Bununla birlikte, daha az kullandığı kurallar tuhaf: kodlamayı yerel ayardan almak yerine, adında "utf-8" (veya birkaç diğer olasılık) dizesini arar. diğer kodlamalarda veya yerel adınız azın önyargılara uymuyorsa.
Richard Kettlewell

1

Bunu googledim ve benim için çalışan aşağıdaki ortam değişkenlerini denedim:

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

LC_ALL'ı farklı cevaplarda bulduğumu görünce bunun doğru olduğunu düşünüyorum. Fakat belki de doğru olan tek cevap bu değil elbette daha doğru cevaplar olabilir.

Neyse biraz daha googling bana değişken için bu açıklama verdi:

LC_ALL Bu değişken tüm yerel kategoriler için değerleri belirler. LC_ALL ortam değişkeninin değeri, LC_ (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) ve LANG ortam değişkeniyle başlayan diğer ortam değişkenlerinden herhangi birinden önceliğe sahiptir.

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

Bunları düşünmem için bana liderlik et, hepsini yöneten dil değişkeni :)


Lütfen lesssürüm numarasını göndermekten çekinmeyin .
Deer Hunter

emin, daha az 458 (GNU düzenli ifadeler)
Melvin Loos

0

Sadece seni güncelle [less][1]

Demlemek ile yapın.

brew install homebrew/core/less
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.