터미널이 UTF-8을 지원하는지 확인하는 방법


21

CentOs 5에서 perl 용 CPAN 모듈을 설정하고 있는데 질문 중 하나는 '터미널이 UTF-8을 지원합니까?'입니다. (낙하산). 어떻게 알 수 있습니까?

답변:


15

실제로 테스트하는 확실한 방법은 텍스트 파일 을 다운로드 하여 터미널에 넣고 모든 것이 정상인지 확인하는 것입니다.

또는 가능하면 유니 코드 옵션을 활성화 한 것으로 가정하여 터미널을 다시 컴파일하십시오 (하나가 있다고 가정).

$ TERM과 $ LANG은 어떻게 생겼습니까?


$ TERM은 "xterm"입니다. $ LANG은 "en_US.UTF-8"(aha!)입니다. 텍스트 파일은 터미널에서는 훌륭하지만 Firefox에서는 그렇지 않습니다.
Whatsit

참으로 내가 실제로 같은 일이 발생 : - / ... 내가 제안을 therek의 시도 할 때, 나는 물음표 있어요
theman_on_osx

$ LANG은 stdout / stderr에 쓸 때 시스템이 사용할 것을 알려줍니다. 터미널의 기능에 대해서는 아무 것도 말하지 않습니다. 그러나 시스템에서 이상한 문자로 인쇄하는 모든 것이 정상으로 보이면, 터미널은 아마도 UTF-8을 지원할 것입니다.
Epcylon

2
텍스트를 표시하고 너비를 확인하여 (이전 및 이후 커서 위치를 읽어) 자동화 할 수도 있습니다. 나는 다른 것을 제안 하는 개념 증명을 게시했습니다 .
Gilles 'SO- 악마 중지'

@ Giles, 당신의 대답은 훌륭하게 간단합니다. 그것을 사랑하십시오!

20

터미널에 이것을 입력하십시오 :

echo -e '\xe2\x82\xac' 

터미널이 UTF-8을 지원하면 유로 기호가 출력됩니다.


모든 글꼴에 유로 기호가있는 것은 아니므로 다른 테스트 코드 포인트를 사용하는 것이 좋습니다.
Michael Hampton

5

가장 작은 방법 : 다음을 실행하고 출력을 확인하십시오. 터미널에 UTF-8이 표시되면 곡절 악센트가있는 대문자 O가됩니다.

perl -le 'print "\x{c3}\x{94}"'

터미널이 UTF-8을 지원한다고 확신합니다 (man_on_osx가 제안한 테스트 통과). 그러나 이것은 빈 줄을 출력합니다. 무슨 일이야?
Whatsit

터미널 앱에서 사용중인 글꼴이 UTF-8 문자를 지원하지 않을 수 있습니다.
therek

4
나는 이것이 매우 늦다는 것을 알고 있지만 UTF-8 Out 플래그가 더 잘 작동합니다.perl -CO -le 'print "\x{d4}"'
Ashley

3
또는 -CO 옵션이 없으면 Perl에 올바른 UTF-8 바이트를 제공하십시오. $ perl -le 'print "\ x {c3} \ x {94}"'Ô
Tim

2

가장 확실한 방법은 'locale'명령을 사용하는 것입니다. 사용할 문자 세트를 지시하는 모든 다양한 변수를 인쇄합니다. 예를 들어, 이것은 RHEL5.3의 출력이며 기본적으로 UTF-8 만 사용하도록 설정되어 있습니다.

LANG="en_US.UTF-8"
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=

1
이것은 터미널을 테스트하지 않으며 로케일 설정 만 사용합니다 (실제로 터미널 에뮬레이터에 의해 항상 설정되는 것은 아니며 터미널의 현재 상태를 반영하지 않거나 일부 사용자 구성으로 대체되었을 수 있음).
Gilles 'SO- 악마 중지'

1

다음 명령을 사용할 수 있습니다.

locale charmap

1
이것은 터미널을 테스트하지 않습니다. 로케일 설정 만 표시합니다.
grawity

1
curl http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

또는

wget -O - http://www.cl.cam.ac.uk/~mgk25/ucs/examples/UTF-8-demo.txt

분명히 wget또는 필요합니다 curl.


-1
UTF=$(echo -e "\u263A")
if [[ ! "$UTF" =~ "A" ]]  ; then
 echo -n "UNICODE here!"
fi

2
이것은 터미널을 테스트하지 않습니다. echo내장 지원 여부 만 테스트 합니다 \u.
grawity
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.