私はライブラリを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
スーパーユーザーとして実行してデフォルトのシステムロケールを変更できます。