Caracteres de losango ilegíveis em tty1

1

Algo errado está acontecendo no Debian Jessie. Normalmente eu uso o tty7 com GUI e está tudo bem aqui. No entanto, em tty1, os caracteres poloneses (sendo ambos digitados e lidos de arquivos UTF-8) são representados por diamantes verticais ou losangos. Semelhante a este apenas todo branco (em fundo preto).

Meu local parece bom, eu entendo.

LANG=en_GB.UTF-8
LANGUAGE=en_GB:en
LC_CTYPE="en_GB.UTF-8"
LC_NUMERIC="en_GB.UTF-8"
LC_TIME="en_GB.UTF-8"
LC_COLLATE="en_GB.UTF-8"
LC_MONETARY="en_GB.UTF-8"
LC_MESSAGES="en_GB.UTF-8"
LC_PAPER="en_GB.UTF-8"
LC_NAME="en_GB.UTF-8"
LC_ADDRESS="en_GB.UTF-8"
LC_TELEPHONE="en_GB.UTF-8"
LC_MEASUREMENT="en_GB.UTF-8"
LC_IDENTIFICATION="en_GB.UTF-8"
LC_ALL=

Eles são os mesmos na GUI em tty7, e tudo bem aqui. Para o melhor do meu conhecimento e experiência, tty1 deve funcionar. Mas isso não acontece. Alguma dica?

    
por Tomasz 21.09.2016 / 19:23

1 resposta

2

A GUI em tty7 usa fontes X, enquanto tty1 usa fontes de console do Linux (com um limite de 512 glifos diferentes). O console do Linux está mostrando os losangos (dependendo da fonte) onde um caractere de substituição Unicode seria exibido porque o código que ele está tentando exibir não é legal UTF-8.

Você obteria esse comportamento para ISO-8859-1 etc. Você pode lembrar que os códigos ISO-8859-1 0xa0 para 0xff mapeiam para Unicode 0x00a0 para 0x00ff . Mas no UTF-8, os bytes parecem diferentes.

"Digitar" o arquivo (talvez com cat ) não é afetado pela localidade. A codificação dos dados e o modo (UTF-8 ou não) do terminal determina se o caractere é impresso normalmente.

Um interessante (errado) recurso do rxvt-unicode é que ele percebe dados não-UTF-8 e Supostamente assume que era ISO-8859-1 e (silenciosamente) o converte em Unicode. Polonês seria ISO-8859-2, que parece mais ou menos o mesmo

Se você estiver usando rxvt-unicode e examinando texto em polonês não UTF8, isso explicaria todos os sintomas da pergunta.

O utilitário file poderia adivinhar se o texto é UTF-8 ou não.

Continuando com o esclarecimento, aqui estão algumas capturas de tela para mostrar o que você pode obter da fonte padrão no console do Linux. Isso usa o programa de teste ncurses , exibindo mais / menos os códigos 0-255:

Primeiro, os caracteres Latin-1 com o modo UTF-8:

Emseguida,oscaracteresLatin-1semmodoUTF-8:

EusandoomodoUTF-8,masexecutando luit com a codificação ISO8859-2, e o mesmo programa de teste usando pl_PL (uma pequena rotunda, mas algo que você pode comparar):

ecomparecom xterm :

Em resumo, você pode notar alguns lozenges para o conjunto de caracteres Latin-1 usando as fontes limitadas para o modo UTF-8 no console do Linux. Mas o polonês (um conjunto de caracteres diferente) parece estar bem coberto.

    
por 22.09.2016 / 01:49