console exibindo caractere de aspas do gcc wongly

2

Após uma atualização para o debian wheezy, meus consoles de texto exibem pontos de interrogação onde deve haver citações

Em X, vejo as coisas corretamente

window.cpp:1056:21: error: base operand of ‘->’ is not a pointer

mas o console mostra

window.cpp:1056:21: error: base operand of ?->? is not a pointer

Se eu remover tudo do arquivo, exceto a citação, e colocar xy em torno dele (para localizá-lo mais facilmente), o emacs hexl-mode me diz que é esse caractere

 00000000: 78e2 8098 790a                           x...y.

Eu entendo 78 (x), 79 (y) e 0a (LF), mas tenho dificuldade em acreditar que algo tão simples quanto uma citação requer três bytes unicode.

Eu também tentei

dpkg-reconfigure console-setup

e conseguiu produzir mais caracteres ilegíveis, mas não conseguiu ver as aspas corretamente. Eu posso digitar uma única citação sem problemas e manpages e tudo parece bem, então eu não sei se o gcc ou o console é o culpado.

    
por Martin Drautzburg 10.08.2013 / 00:59

1 resposta

4

Os caracteres de cotação extravagantes ‘’ são caracteres Unicode U + 2018 e U + 2019 (um único caractere Unicode cada). Sua codificação UTF-8 é uma seqüência de 3 bytes para cada, e2 80 98 e e2 80 99, respectivamente. Não tenho ideia de por que você tem dificuldade em acreditar nisso.

Evidentemente, seu ambiente indica uma localidade UTF-8. Execute locale para exibir as variáveis de ambiente relevantes. Parece que seu console está configurado para exibir UTF-8, mas a fonte não inclui os caracteres e , portanto você vê um ? .

Se você mudar para uma localidade não-UTF-8, o gcc usará aspas ASCII ( '->' ).

    
por 10.08.2013 / 01:25