31 votes

Comment faire pour que les lettres accentuées fonctionnent vraiment sur bash ?

Mon installation bash sur cygwin ne gère pas correctement les lettres accentuées. J'ai essayé d'ajouter

set input-meta on    # to accept 8-bit characters
set output-meta on   # to show 8-bit characters
set convert-meta on  # to show it as character, not the octal representation

à mon rc d'entrée, mais cela ne fonctionne pas encore tout à fait. En effet, si je tape

$ echo ù

puis, avant que je n'appuie sur la touche Entrée, il est automatiquement changé en

$ echo \303

bien que la sortie soit correcte, car j'obtiens

$ echo \303
ù

J'obtiens le même résultat pour toute autre lettre accentuée. Habituellement, j'utilise un clavier non-italien, et je me sers de autohotkey pour remplacer les lettres suivies d'une apostrophe par une lettre accentuée. Lorsque c'est le cas, les lettres accentuées sont remplacées par une \302 et ils impriment des déchets en fonction de la lettre : imprime un 3y pour un ù , a ¢ pour un ò et rien pour le reste.

Comment faire pour que tout cela ait un sens ?

EDIT : mes paramètres linguistiques, ma version de cygwin et mon terminal sont les suivants

$ uname -a
CYGWIN_NT-6.1-WOW64 ferdi-Asus 1.7.17(0.262/5/3) 2012-10-19 14:39 i686 Cygwin
$ locale
LANG=it_IT.UTF-8
LC_CTYPE="it_IT.UTF-8"
LC_NUMERIC="en_US.UTF-8"
LC_TIME="it_IT.UTF-8"
LC_COLLATE="it_IT.UTF-8"
LC_MONETARY="it_IT.UTF-8"
LC_MESSAGES="it_IT.UTF-8"
LC_ALL=
$ tty
/dev/pty1

Je l'invoque en cliquant simplement sur le lien du terminal Cygwin. Il redirige vers

C:\cygwin\bin\mintty.exe -i /Cygwin-Terminal.ico -

La partie pertinente de l'autohotkey script est la suivante

#NoEnv  ; Recommended for performance and compatibility with future AutoHotkey releases.
SendMode Input  ; Recommended for new scripts due to its superior speed and reliability.
SetWorkingDir %A_ScriptDir%  ; Ensures a consistent starting directory.
...
::avra'::avrà
::avro'::avrò
...

15voto

Rubens Mariuzzo Points 6022

Pour obtenir des lettres accentuées sur bash via Cygwin en utilisant Mintty 1.1.2 il suffit de faire ce qui suit :

  1. Allez à la menu (si vous ne voyez pas de menu, faites un clic droit sur votre Terminal).
  2. Cliquez sur Options... .
  3. Cliquez sur Texte .
  4. Changez le Locale a C .
  5. Changez le Jeu de caractères a ISO-8859-1 (Western European) .

Changing Locale and Character set in Mintty 1.1.2

Alors, testez-le :

Echoing accented letters in Mintty 1.1.2

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X