'less'명령으로 UTF-8을 처리하는 방법은 무엇입니까?


31

Mac 터미널에서 UTF-8 인쇄는 일반적으로 작동하지만 less제대로 작동하지 않습니다.

따라서 이것은 올바르게 작동합니다.

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

그러나 덜 파이핑하면 다음과 같이됩니다.

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

이 문제를 어떻게 해결할 수 있습니까?

진단의 경우 :

Mac OS 10.6.8을 사용하고 있습니다. 버전 418, 터미널 2.1.2 (273.1) 이하.

내 로케일의 출력은 다음과 같습니다.

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

답변:


43

좋아, 나는 인터넷 검색 후 답을 찾았다. 분명히 LESSCHARSET다음과 같이 설정해야합니다.

export LESSCHARSET=utf-8

이제 less잘 작동합니다.


CentOS에서도 같은 문제가있었습니다. 이 줄도 거기에 고정되었습니다.
Wim Deblauwe

9
나를 위해 문제를 해결 한 것은 less -r( "raw"제어 문자 표시)
waldyrious

이것은 데비안 8에서도 작동합니다. 감사합니다!
lucaferrario

누군가이 대답을 받아 들여야합니다! 문제를 해결합니다.
lensovet

2
less -r같은 일을하지만 이모티콘을 올바르게 처리합니다 export LESSCHARSET=utf-8.
노아 서스 먼

6

에서 유니 코드 문자를 볼 수 less있지만 less이모티콘을 표시 할 수없는 경우 less최신 버전으로 업그레이드하십시오 . Mac OS X에서 버전 458에서 481로 이동하여 문제가 해결되었습니다 (예 : git log커밋 메시지에 이모티콘을 표시 할 수 있음).

홈 브루가있는 경우을 실행하여 시스템을 최신 버전으로 교체 할 수 있습니다 brew install homebrew/dupes/less.


감사! 최신 버전의 homebrew에서는 brew install less업그레이드 만하면 됩니다.
Alex Ciminian 2016 년

2

나와 함께 작동

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이 중요한 것입니다. 로캘에서 인코딩을 검색하는 대신 이름에서 문자열 "utf-8"(또는 다른 가능성)을 찾습니다. 따라서 일부를 원하면 LESSCHARSET을 사용해야합니다. 다른 인코딩 또는 로케일 이름이 덜 선입견과 일치하지 않는 경우
Richard Kettlewell

1

나는 이것을 봤고 나를 위해 일한 다음 환경 변수를 시도했다.

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

여러 다른 답변에서 LC_ALL을 찾으면 이것이 올바른 것으로 생각합니다. 그러나 유일하게 올바른 대답은 아니지만이 질문에 대한 더 정확한 대답이있을 수 있습니다.

어쨌든 좀 더 인터넷 검색을 통해 변수에 대해 다음과 같이 설명했습니다.

LC_ALL이 변수는 모든 로케일 범주의 값을 결정합니다. LC_ALL 환경 변수의 값은 LC_ (LC_COLLATE, LC_CTYPE, LC_MESSAGES, LC_MONETARY, LC_NUMERIC, LC_TIME) 및 LANG 환경 변수로 시작하는 다른 환경 변수보다 우선합니다.

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

내가 이것을 모두 지배하는 언어 변수라고 생각하도록 이끌었습니다. :)


less'버전 번호 를 게시하십시오 .
사슴 사냥꾼

확실히, 458 이하 (GNU 정규식)
Melvin Loos

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.