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