caracteres GNU Dialog e UTF-8

3

Estou usando o diálogo GNU em um dos meus longos scripts de shell. Uma das áreas com as quais tenho problemas é quando estou solicitando uma caixa de entrada na qual o usuário pode digitar o título de um livro, principalmente em francês.

Neste inputBox, inserindo caracteres acentuados (éàè são muito comuns em francês), ou caracteres especiais UTF-8, como o em-dash "-", desloca o cursor 4 caracteres para a direita, ao invés de um. Depois de 3 ou 4 caracteres "especiais", a caixa de entrada é completamente inutilizável por causa desse artefato.

Da mesma forma, quando exibo um menu com caixa de diálogo, os caracteres acentuados deslocam a borda direita da caixa de diálogo. Isso é menos prejudicial do que na caixa de entrada, mas ainda assim é um desconforto visual.

Eu tentei todos os tipos de coisas para fazer isso funcionar, sem sucesso.

Para o registro, aqui estão minhas vars de ambiente LC_ *:

LC_PAPER=fr_FR.UTF-8
LC_ADDRESS=fr_FR.UTF-8
LC_MONETARY=fr_FR.UTF-8
LC_NUMERIC=fr_FR.UTF-8
LC_ALL=fr_FR.UTF-8
LC_TELEPHONE=fr_FR.UTF-8
LC_MESSAGES=fr_FR.UTF-8
LC_IDENTIFICATION=fr_FR.UTF-8
LC_COLLATE=fr_FR.UTF-8
LC_MEASUREMENT=fr_FR.UTF-8
LC_CTYPE=fr_FR.UTF-8
LC_TIME=fr_FR.UTF-8
LC_NAME=fr_FR.UTF-8
LANG=fr_FR.UTF-8

O que eu posso fazer?

(Edit: como dito abaixo, eu estou em um Mac, e o mesmo problema surge se eu uso o iTerm2 ou o emulador de terminal integrado).

    
por Cyrille 08.09.2011 / 18:20

2 respostas

3

Eu sei que é uma pergunta antiga, mas a resposta pode ser útil ...

Resolvi o problema ao definir a seguinte variável de ambiente:

export NCURSES_NO_UTF8_ACS=1

Eu tenho putty com a seqüência Terminal de putty-256color e uma máquina RHEL6. Ele também funciona ao usar o tmux ou a tela. Para mais informações sobre esta variável, apenas chame 'man 3 ncurses'.

    
por 29.07.2014 / 08:56
0

Verifique se o seu terminal está no modo UTF-8. Se você está configurando as variáveis de localidade do seu ~ / .bashrc como algumas delas, elas se aplicam ao shell , mas não ao seu terminal pai . Use tr \0 \n </proc/$PPID/environ para verificar se o terminal possui as mesmas variáveis de localidade. (Alguns (como o Terminal GNOME) têm um menu de codificação de caracteres explícito, que você pode usar em seu lugar.)

Além disso, verifique se a localidade está listada por locale -a - se não estiver, edite /etc/locale.gen e execute locale-gen como root.

Observe que não é recomendado definir LC_ALL a menos que seja necessário, pois isso impossibilita a sobreposição das variáveis mais específicas. Apenas LANG é suficiente

    
por 08.09.2011 / 20:48