터미널의 문자 인코딩을 얻는 방법


답변:


108

터미널은 환경 변수 를 사용하여 사용할 문자 집합 을 결정하므로 해당 변수를보고 결정할 수 있습니다.

echo $LC_CTYPE

또는

echo $LANG

4
이러한 환경 변수는 I / O 용 터미널을 사용하는 응용 프로그램에서 사용됩니다. 터미널 에뮬레이터 자체는 그것들에 대해 전혀 알지 못하며 현재 유효한 문자 인코딩은 에뮬레이터 프로그램 (GNOME 터미널의 경우 libvte 클래스 내부의 데이터 멤버) 내의 설정입니다.
— JdeBP

여기에 제시된 변수의 순서는 좋지 않습니다. 보다 완전한 솔루션은 다음과 같습니다. echo $ {LC_ALL :-$ {LC_CTYPE :-$ {LANG}}}. 다시 말하지만 설정되는 변수가 유효하다는 보장이 아니므로 locale프로그램을 고수해야합니다 (여기 다른 답변에서 볼 수 있음).
— Mike Frysinger

@JdeBP가 말했듯이 터미널은 인코딩을 결정하기 위해 환경 변수를 사용 하지 않습니다locale . 그러나 터미널은 상호 작용하는 응용 프로그램이 locale환경 변수 를 설정하여 인코딩을 알 수 있도록 할 수 있습니다 . 예를 들어, 맥 OS에 당신은 터미널 인코딩을 선택할 수 있습니다 선택적으로 설정 locale터미널 시작시 환경 변수를 Terminal> Preferences> Profiles> Advanced.
— 마계로

97

locale 인수가없는 명령은 LANGUAGE를 제외한 모든 관련 환경 변수의 값을 인쇄합니다.

현재 인코딩의 경우 :

locale charmap

사용 가능한 로케일 :

locale -a

사용 가능한 인코딩 :

locale -m

1
이것이 CentOS 시스템에서 나를 위해 일한 것입니다. 현재 언어 설정에 따른 시스템 인코딩을 보여줍니다. 해당 기계에 도달하는 데 사용되는 터미널 설정은 사용중인 클라이언트의 다른 스토리와 기능입니다.
— Phil DD

45

인코딩 및 언어 확인 :

$ echo $LC_CTYPE
ISO-8859-1
$ echo $LANG
pt_BR

모든 언어 얻기 :

$ locale -a

pt_PT.utf8로 변경합니다.

$ export LC_ALL=pt_PT.utf8 
$ export LANG="$LC_ALL"

16

Python이있는 경우 :

python -c "import sys; print(sys.stdout.encoding)"

1
위의 모든 오퍼링 중에서 Slackware64 v. 14.2 상자에서 작동 한 유일한 제안은이 파이썬 스 니펫이었습니다. 감사!
— Thomas Altfather Good

6

내가 아는 한, 아닙니다.

에서 정황 표시 $LC_CTYPE, locale이러한 힘은 고혹적 인 것처럼 보이지만이 완전히 터미널 응용 프로그램을 인코딩 (실제로 에뮬레이터)에서 분리 된 화면에 문자를 표시 할 때 사용되는 일이 있습니다.

인코딩을 확실히 감지하는 유일한 방법은 인코딩에만있는 것을 출력하는 것입니다. 예를 들어 ä스크린 샷을 찍고 해당 이미지를 분석하고 출력 문자가 올바른지 확인합니다.

아니, 안타깝게도 불가능합니다.


0

현재 로케일 정보를 보려면 locale명령을 사용하십시오 . 다음은 RHEL 7.8의 예입니다.

[usr@host ~]$ locale
LANG=en_US.UTF-8
LC_CTYPE="en_US.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="en_US.UTF-8"
LC_COLLATE="en_US.UTF-8"
LC_MONETARY="en_US.UTF-8"
LC_MESSAGES="en_US.UTF-8"
LC_PAPER="en_US.UTF-8"
LC_NAME="en_US.UTF-8"
LC_ADDRESS="en_US.UTF-8"
LC_TELEPHONE="en_US.UTF-8"
LC_MEASUREMENT="en_US.UTF-8"
LC_IDENTIFICATION="en_US.UTF-8"
LC_ALL=
당사 사이트를 사용함과 동시에 당사의 쿠키 정책과 개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.