LC_ALL = C está definido, não tem idéia porque

0

Estou usando st, o terminal simples ou terminal suckless, que é um terminal com suporte a Unicode.

Eu tenho duas máquinas, ambas executam o Arch Linux com basicamente as mesmas configurações do sistema, mas eu só obtenho suporte a Unicode na máquina antiga!

Após algumas investigações, acho que tem algo a ver com minhas localidades, mas não tenho certeza.

locale dá:

[tim@x1carbon: ~]$ locale
LANG=en_DE.UTF-8
LC_CTYPE="C"
LC_NUMERIC="C"
LC_TIME="C"
LC_COLLATE="C"
LC_MONETARY="C"
LC_MESSAGES="C"
LC_PAPER="C"
LC_NAME="C"
LC_ADDRESS="C"
LC_TELEPHONE="C"
LC_MEASUREMENT="C"
LC_IDENTIFICATION="C"
LC_ALL=C

pelo que entendi, isso significa que tudo o que é escrito em "..." é definido implicitamente, portanto, os únicos locais explicitamente definidos seriam LANG e LC_ALL .

Eu configurei LANG=de_DE.UTF-8 em /etc/locale.conf .

[tim@x1carbon: ~]$ cat /etc/locale.conf
LANG=de_DE.UTF-8
LC_COLLATE=C
LANGUAGE=en_US.UTF-8

mas não me lembro de definir LC_ALL (na minha máquina antiga, essa variável está vazia quando eu corro locale )!

Eu executei sudo grep -rnw '/usr/' -e 'LC_.*=C' (um padrão de pesquisa que examina todos os arquivos em /usr/ -directory) que gera muitos scripts e arquivos contendo LC_ALL=C , mas na maioria dos casos eu acho que os programas existentes estavam lendo meu defina LC_ALL -variable e adicione variáveis correspondentes aos seus scripts.

Não consigo encontrar, onde eu realmente defini essa variável e posso estar enganado com o meu entendimento, que essa é a razão da renderização falsa, mas ainda: Configurar LC_ALL para uma localidade falsa pode causar muitos outros questões que eu penso.

Além disso, localectl status coloca:

[tim@x1carbon: ~]$ localectl status
   System Locale: LANG=de_DE.UTF-8
                  LANGUAGE=en_US.UTF-8
                  LC_COLLATE=C
       VC Keymap: de-latin1
      X11 Layout: n/a

... que é a mesma saída da máquina em funcionamento.

Eu canalizei a saída do grep -command para um arquivo de log e posso fazer o upload desse arquivo em algum lugar, mas não sei como fazer isso corretamente, pois ainda não havia motivo para fazê-lo.

    
por Tim Hilt 01.09.2018 / 23:36

2 respostas

0

Então, depois de abrir um tópico no Archlinux-Forum, alguém apontou que eu poderia estar configurando LC_ALL=C em algum lugar de um arquivo no meu diretório pessoal. Depois de executar grep -rnw '/home/' -e 'LC_.*=C' eu achei, que no meu .bashrc, havia uma linha dizendo

export LC_ALL=C

que eu deletei. Depois de uma reinicialização, a execução de locale me deu en_DE.UTF-8 para a maioria das minhas localidades, o que é ainda mais confuso. Mas depois que eu olhei em minhas configurações regionais (usando o KDE como minha área de trabalho), descobri que minhas configurações de "formato" foram definidas como en_DE. Excluído isso também, reiniciado, agora tudo funciona como esperado.

    
por 03.09.2018 / 14:24
0

"Este poderia ser o problema?" - Sim.

A maioria dos aplicativos aceita a codificação de LC_ALL , LC_CTYPE ou LANG , o primeiro que não está vazio nessa lista. O valor resolvido também é mostrado por locale charmap . Tanto quanto eu entendo, você tem LC_CTYPE=C , não tenho certeza sobre o seu LC_ALL . Estes devem conter um código de idioma UTF-8 em vez de C.

"Por que as localidades do meu sistema antigo estão definidas" - A pergunta deve ser: como elas não estão definidas no novo sistema? Infelizmente não posso responder isso, mas eles devem ser definidos.

    
por 02.09.2018 / 16:25