Como a localidade en_US deve funcionar com caracteres imprimíveis

1

Eu tenho dois sistemas confiáveis do Ubuntu. Um recém-instalado e um um pouco mais velho.

Nestes sistemas, eu tenho alguns problemas com o en_US locale, ele se comporta de maneira diferente, mais facilmente visto com este comando:

printf '\xe5\xe4\xf6' | LANG=en_US LC_ALL=en_US hexdump -vC

No antigo, recebo a saída esperada:

00000000  e5 e4 f6                                          |åäö|
00000003

mas no recém-instalado recebo pontos em vez de åäö:

00000000  e5 e4 f6                                          |...|
00000003

Também verifiquei em um sistema CentOS 6 e lá também obtive a saída que espero (a primeira). Mas, se eu executar locale-gen --purge no sistema antigo, ele será alterado para a saída mais recente (IMO incorreta).

Alguém sabe se há algo que eu possa fazer para fazer com que o novo sistema gere a saída esperada, ou se há algo que mudou nessa localidade para que os caracteres dos usuários não sejam mais imprimíveis ou se houver algo mais que possa afetá-lo ?

localedef --list tem saída idêntica:

en_AG
en_AG.utf8
en_AU.utf8
en_BW.utf8
en_CA.utf8
en_DK.utf8
en_GB.utf8
en_HK.utf8
en_IE.utf8
en_IN
en_IN.utf8
en_NG
en_NG.utf8
en_NZ.utf8
en_PH.utf8
en_SG.utf8
en_US
en_US.iso88591
en_US.utf8
en_ZA.utf8
en_ZM
en_ZM.utf8
en_ZW.utf8
es_US
es_US.iso88591
es_US.utf8
    
por Per Johansson 02.10.2014 / 15:15

2 respostas

2

Encontrei uma maneira de imprimir esses caracteres usando o código de idioma en_US:

Pressione Alt + F2 e execute env LANG=en_US gnome-terminal . Então na janela do terminal:

$ printf '\xe5\xe4\xf6\n'
åäö
$

Isso indicaria que não há problema com a localidade, pelo menos, mas permite a codificação ISO-8859-1 conforme o esperado.

Editar:

A impressão usando o hexdump também funciona bem:

$ printf '\xe5\xe4\xf6' | hexdump -vC
00000000  e5 e4 f6                                          |åäö|
00000003
$
    
por Gunnar Hjalmarsson 02.10.2014 / 18:11
1

Consegui recuperá-lo. Primeiro, remova todos os códigos do idioma (na verdade, estou usando uma imagem do docker para que a parte esteja começando do zero) e, em seguida,

echo "en_US ISO-8859-1" >> /var/lib/locales/supported.d/local
dpkg-reconfigure locales

Isso gera arquivos de localidade de trabalho. Depois disso, posso adicionar o UTF-8 sem quebrá-lo.

echo "en_US UTF-8" >> /var/lib/locales/supported.d/local
dpkg-reconfigure locales

Agora eu acho que tenho que descobrir como fazer um relatório de bug ...

    
por Per Johansson 03.10.2014 / 10:06