debian 10 spatne zobrazeni utf8 grafiky v terminalu
Adam Pribyl
pribyl na lowlevel.cz
Pátek Říjen 16 13:35:56 CEST 2020
On Fri, 16 Oct 2020, Pavel Kankovsky wrote:
> On Mon, 12 Oct 2020, Adam Pribyl wrote:
>
>> Pripojuji se na nekolik serveru s instalaci debianu 10 pres ssh z xtermu
>> (xterm-256color) nebo z linuxove konzole. Na jedne z instalaci se mi ovsem
>> ve vypisech systemctl misto zobrazeni grafickych prvku zobrazuje cca toto
>>
>> systemctl list-dependencies
>> default.target
>> ?<97><8F> ?<94><9C>?<94><80>display-manager.service
>> ?<97><8F> ?<94><9C>?<94><80>megaclisas-statusd.service
>>
>> pricemz znaky jsou spravne obarveny, ale to <97><8F> se proste nezmeni na
>> grafiku. Otaznik je takovy ten podivny otaznik v ovalu, ktery nejde
>> zkopirovat a je to zrejme 0xEF neco. Zjistil jsem ze podobny problem mam s
>> delicimi pomlckami v man, nicmene v mc nebo htopu se graficke prvky
>> normalne zobrazuji.
>
> Řekl bych, že ten kvaziotazník by měl být 0xe2, protože UTF-8 pro ty puntíky
> a čáry začíná právě tímto bajtem a např. 0x97 a 0x8f jsou až zbytek té
> tříbajtové sekvence.
>
> Vypadá to, že někde po cestě ze systemctl na obrazovku něco bajt 0xe2 špatně
> interpretuje a tím se rozbije UTF-8 sekvence pro příslušný znak.
>
> Z toho, že se zbývající bajty promění např. v <97><8F> lze soudit, že je
> rozbité, už když se to zpracovává v less-u (je to less?).
>
> Doporučuji zkusit
> 1. v less-u dát "-o", výsledek uložit do souboru a prozkoumat;
> 2. spustit "PAGER=cat systemctl list-dependencies".
>
> Tím se oveří, zda to opravdu dělá less.
>
> Pak zůstane otázka, *proč* to less dělá. Hádám, že by se to tak mohlo chovat
> v případě, že by z nějakého důvodu očekával osmibitovou znakovou sadu typu
> ISO 8859: 0xe2 by považoval za normální znak a poslal dál (ale terminál by mu
> pak nerozuměl, protože by viděl jen první bajt sekvence, tak by z toho udělal
> ten kvaziotazník), 0x97 a 0x8f by less považoval za řídící znaky v C1 a
> změnil na <xx>.
Mel jsem dojem ze se systemd od zacatku chlubi ze ma vlastni pager, ale je
to asi less, minimalne to vypada na spravny smer - zkusil jsem
systemctl list-dependencies > ld.out
a svete div se - more ho zobrazi spravne (ovsem bez barev), ale less pise
"ld.out" may be a binary file. See it anyway?
a zobrazi ten podivny vystup, kde skutecne je
E2 97 8F
s PAGER=cat systemctl list-dependencies
pak vystup taky funguje OK.
> Není nastavena proměnná LESSCHARSET případně LESSCHARDEF?
Mno promene jsem nasel v ~/.less a ~/.lesskey (.less je nejaky
binarni blob a promene nejsou soucasti env,
less je cte zrejme pri svem pusteni):
LESSCHARSET = latin1
Jen pro pobaveni
zář 22 1998 .lesskey
čen 4 1999 .less
ty soubory jsou tam pres pres 20 let.. tak nevim zda to do ted nevadilo
nebo jsem si toho jen nevsiml.
Kazdopadne velke diky.
> --
> Pavel Kankovsky aka Peak "Que sçay-je?"
Adam Pribyl
Další informace o konferenci Linux