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