debian 10 spatne zobrazeni utf8 grafiky v terminalu

Pavel Kankovsky peak na argo.troja.mff.cuni.cz
Pátek Říjen 16 11:16:21 CEST 2020


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>.

Není nastavena proměnná LESSCHARSET případně LESSCHARDEF?

-- 
Pavel Kankovsky aka Peak                      "Que sçay-je?"


Další informace o konferenci Linux