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

이제 그놈 터미널의 문자 인코딩을 “GBK”(기본값은 UTF-8)로 변경했지만 Linux에서 값 (문자 인코딩)을 어떻게 얻을 수 있습니까?



답변

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

echo $LC_CTYPE

또는

echo $LANG


답변

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

현재 인코딩의 경우 :

locale charmap

사용 가능한 로케일 :

locale -a

사용 가능한 인코딩 :

locale -m


답변

인코딩 및 언어 확인 :

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


답변

Python이있는 경우 :

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


답변

내가 아는 한, 아닙니다.

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

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

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


답변

현재 로케일 정보를 보려면 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=


답변