저는 라이브러리를 fbterm
사용하여 python-curses
TUI 소프트웨어를 작성하고 있습니다 .
풀 컬러를 얻으려면 fbterm
매뉴얼 페이지를 읽고 환경 변수 TERM
를 fbterm
.
매뉴얼 페이지:
By default, FbTerm sets environment variable "TERM" to value "linux", user need run "TERM=fbterm /path/to/program" to enable 256 color mode.
TERM=fbterm
Python 프로그램을 설정하고 실행할 때 . 문자열 리터럴은 괜찮지만 상자/직사각형 그리기 문자( -
|
┌
...)가 뒤섞여 있습니다( Ä
³
¿
등).
ÚÄÄÄÄÄ¿
³Meas.³
ÀÄÄÄÄÄÙ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÚÄÄÄÄÄ¿ ³1-shot ³³n-shot ³
³Setup³ ³ ³³ ³
ÀÄÄÄÄÄÙ ³ ³³ ³
ÚÄÄÄÄÄ¿ ³ ³³ ³
³Data ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÀÄÄÄÄÄÙ
ÚÄÄÄÄÄ¿
³About³ ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿ÚÄÄÄÄÄÄÄÄÄÄÄÄ¿
ÀÄÄÄÄÄÙ ³Target ³³Weather ³
ÚÄÄÄÄÄ¿ ³ ³³ ³
³Sys. ³ ÀÄÄÄÄÄÄÄÄÄÄÄÄÙÀÄÄÄÄÄÄÄÄÄÄÄÄÙ
ÀÄÄÄÄÄÙ
내가 뭘 잘못하고 있는 걸까요?
어제 교차 포스팅을 했는데요스택 오버플로fbterm
, 그러다가 문제가 환경적 가치와 더 관련이 있다는 것을 깨달았습니다. 그래서 여기에 글을 올립니다. 원본 게시물에는 내 추론, 내가 한 일, 내가 어떻게 결론에 도달했는지 등이 포함되어 있습니다. (자세히)
답변1
fbterm
C
문자 맵이 ANSI_X3.4-1968( 로캘의 ASCII)도 UTF-8도 아닌 로캘에서 시작하면 이를 재현할 수 있습니다(블록 다이어그램은 작동하지 않음). 출력을 확인하여 locale charmap
해당 로케일(출력에 따라 ISO-8859-1 또는 ISO-8859-15일 수 있음)에 사용된 문자 맵을 확인하고 locale
현재 로케일 구성을 확인하십시오.
$ infocmp -1 fbterm | grep acs
acsc=+\020\,\021-\030.^Y0\333`\004a\261f\370g\361h\260i\316j\331k\277l\332m\300n\305o~p\304q\304r\304s_t\303u\264v\301w\302x\263y\363z\362{\343|\330}\234~\376,
rmacs=\E[10m,
smacs=\E[11m,
fbterm
블록다이어그램 문자는 비트 8이 설정된 바이트임을 알 수 있으므로 ISO8859-1과 같은 문자 세트를 사용하면 ISO8859-1 과 같은 문자 세트를 사용할 때 p
일반 문자(예: 위의 VT100에 매핑된 가로선 문자)와 충돌한다고 생각됩니다. 1 1은 라틴어로도 알려져 있습니다1).\304
Ä
가장 간단한 해결책은 가능한 경우 UTF-8 로케일을 사용하는 것입니다.
다음으로 시작하여 locale -a
시스템에서 사용 가능한 로케일 목록을 보려면 리소스를 참조하세요 .fbterm
LANG=en_US.UTF-8 fbterm
예를 들어, fbterm
미국 영어 로케일은 문자 세트로 UTF-8로 시작합니다( LC_ALL
및 환경 변수가 설정되지 않았다고 가정). fbterm은 UTF-8 로케일에서 실행될 때 자체적으로 이 작업을 수행하지 않는 것처럼 보이므로 해당 터미널에서 실행하고 LC_CTYPE
싶을 수도 있습니다 .stty iutf8
Debian 기반 시스템에서는 dpkg-reconfigure locales
수퍼유저로 실행하여 기본 시스템 로케일을 변경할 수 있습니다.