# Encodage de lecture inapproprié : éditeur = vim-gtk3

**URL:** <https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809>\
**Category:** Support Debian\
**Created:** [Février 2, 2023, 4:37 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809 "2023-02-02T16:37:42Z")\
**Posts on this page:** 9\
**Page:** 1

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 2, 2023, 4:37 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/1 "2023-02-02T16:37:42Z")

</div>

**debian 11 / Xfce**

bonjour ,

lorsque j’ouvre avec **vim-gtk3** le fichier .viminfo avec dans _préférences_ du terminal Xfce encodage = UTF-8 j’obtiens un texte illisible . Pourtant ce fichier a été écrit avec un encodage UTF-8 comme indiqué :

```nohighlight
1) commande : mm@Xfce:~$ vim .viminfo

2) affichage :
# Ce fichier viminfo a Ã©tÃ© gÃ©nÃ©rÃ© par Vim 8.2.
# Vous pouvez l'Ã©diter, mais soyez prudent.

# Viminfo version
|1,4

# 'encoding' dans lequel ce fichier a Ã©tÃ© Ã©crit
*encoding=utf-8

```

j’ai essayé d’autres encodages et c’est pire , il en reste des traces d’ailleurs car même en revenant à UTF-8 le texte s’est modifié :

```nohighlight
 # Ce fichier viminfo a ÃƒÂ©tÃƒÂ© gÃƒÂ©nÃƒÂ©rÃƒÂ© par Vim 8.2.
# Vous pouvez l'ÃƒÂ©diter, mais soyez prudent.

```

c’est le seul cas où j’observe un problème avec UTF-8 , mais j’aimerais bien savoir d’où ça provient .

notes :

- rien de tel avec le pager **less** , tout est clair
- si je corrige par des " é " ou des " e " le problème revient
- en fait si je supprime la 1ère phrase elle est régénérée à la prochaine édition ==\> elle n’a pas été supprimée et donc ==\> au temps pour moi car

```nohighlight
mm@Xfce:~$ ls -l .viminfo 
-rw------- 1 mm mm 19196 2 févr. 18:25 .viminfo

```

avec les droits corrects les corrections par des " é " résistent bien . Reste uniquement le problème initial de l’encodage .

---

<div class="post-metadata">

**Author:** ![limax](https://www.debian-fr.org/user_avatar/www.debian-fr.org/limax/32/3886_2.png) [@limax](https://www.debian-fr.org/u/limax)\
**Post date:** [Février 2, 2023, 6:28 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/2 "2023-02-02T18:28:15Z")

</div>

Je dirai déjà savoir en quoi ton texte est encodé.

```auto
sudo apt install python3-chardet

```

par exemple j’ai

```auto
limax@debian:~$ chardet texte1.txt 
texte1.txt: utf-8 with confidence 0.99
limax@debian:~$ chardet texte2.txt
texte2.txt: ISO-8859-1 with confidence 0.73

```

edit: _encoding_ est pour lire pas pour sauvegarder.

```auto
 :set encoding - set the encoding used to read the file
 :set fileencoding - set the encoding to use when saving the file
 :set termencoding - set the encoding to use to display characters to your terminal

```

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 2, 2023, 6:33 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/3 "2023-02-02T18:33:14Z")

</div>

> [@limax](#):
>
> ```auto
> sudo apt install python3-chardet
> 
> ```

je pensais que la remarque dans _.viminfo_ était suffisante car :

```plaintext
# 'encoding' dans lequel ce fichier a Ã©tÃ© Ã©crit
*encoding=utf-8

```

et donc avec l’outil idoine ça donne :

```plaintext
mm@Xfce:~$ chardet .viminfo
.viminfo: utf-8 with confidence 0.99

```

---

<div class="post-metadata">

**Author:** ![limax](https://www.debian-fr.org/user_avatar/www.debian-fr.org/limax/32/3886_2.png) [@limax](https://www.debian-fr.org/u/limax)\
**Post date:** [Février 2, 2023, 6:39 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/4 "2023-02-02T18:39:40Z")

</div>

alors là je sèche…

Comme tu as plusieurs caractères pour le é par exemple (2 octets de mémoire)  
vim semble lire du latin1 (ou autre)

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 2, 2023, 6:50 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/5 "2023-02-02T18:50:53Z")

</div>

> [@limax](#):
>
> alors là je sèche…

pas grave car tu viens de me donner la clé pour lire et utiliser une commande dans _vim_ : " :set " ou plus généralement ":cmd " que je voyais dans le manuel d’utilisation et que je ne comprenais pas viennent enfin de devenir compréhensibles . Je viens d’essayer avec " :set number " et ça marche . Pas facile de domestiquer , même un peu , cet éditeur .

et donc merci pour la réponse qui fut fructueuse .

---

<div class="post-metadata">

**Author:** ![Clochette](https://www.debian-fr.org/user_avatar/www.debian-fr.org/clochette/32/8757_2.png) [@Clochette](https://www.debian-fr.org/u/Clochette)\
**Post date:** [Février 2, 2023, 6:54 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/6 "2023-02-02T18:54:15Z")

</div>

> [@limax](#):
>
> alors là je sèche…
> 
> Comme tu as plusieurs caractères pour le é par exemple (2 octets de mémoire)  
> vim semble lire du latin1 (ou autre)

Tous ça ressemble fortement à de la configuration multiple de locale entre le système, les utilisateurs et les applications.

@zao  
Quels sont les locales défini sur le système ?

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 2, 2023, 6:58 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/7 "2023-02-02T18:58:38Z")

</div>

> [@Clochette](#):
>
> Quels sont les locales défini sur le système ?

```plaintext
mm@Xfce:~$ locale
LANG=fr_FR.UTF-8
LANGUAGE=
LC_CTYPE="fr_FR.UTF-8"
LC_NUMERIC="fr_FR.UTF-8"
LC_TIME="fr_FR.UTF-8"
LC_COLLATE="fr_FR.UTF-8"
LC_MONETARY="fr_FR.UTF-8"
LC_MESSAGES="fr_FR.UTF-8"
LC_PAPER="fr_FR.UTF-8"
LC_NAME="fr_FR.UTF-8"
LC_ADDRESS="fr_FR.UTF-8"
LC_TELEPHONE="fr_FR.UTF-8"
LC_MEASUREMENT="fr_FR.UTF-8"
LC_IDENTIFICATION="fr_FR.UTF-8"
LC_ALL=

mm@Xfce:~$ localectl status
   System Locale: LANG=fr_FR.UTF-8
       VC Keymap: n/a
      X11 Layout: fr
       X11 Model: pc105
     X11 Variant: latin9

mm@Xfce:~$ locale -a
C
C.UTF-8
fr_FR.utf8
POSIX

```

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 3, 2023, 3:34 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/8 "2023-02-03T15:34:54Z")

</div>

> [@limax](#):
>
> `:set termencoding - set the encoding to use to display characters to your termin`

tu avais raison : c’est bien du Latin1 car si j’utilise ce que tu m’as donné comme commande

```plaintext
:set termencoding=Latin1

```

alors le texte devient clair .

note : je me suis aussi aidé de [stackoverflow](https://stackoverflow.com/questions/25115752/vim-encodings-latin1-and-utf-8)

et puis j’ai testé lacommande _:set_ seule et :

```plaintext
:set
--- Options ---
  background=dark helplang=fr scroll=12 ttymouse=sgr
  filetype=viminfo ruler ttyfast
  backspace=indent,eol,start
  fileencoding=latin1
  fileencodings=ucs-bom,utf-8,default,latin1
.................

```

latin1 est bien là , non ? ~~Pourquoi mélanger les encodages , dans quel but ?~~ Et puis cette commande n’est-elle pas préférable à _chardet_ dans le cas de _vim_ ? En tout cas ces 2 commandes ne donnent pas le même résultat ( au moins apparemment )!!

au temps pour moi car :

> You should set `fileencodings` to the different encodings vim should try when opening a file, for example:
> 
> ```auto
> set fileencodings=ucs-bom,utf-8,latin1
> 
> ```

provient de [stackoverflow](https://stackoverflow.com/questions/1174847/how-to-set-the-character-encoding-for-a-file-in-vim).

épilogue : j’ai rajouté 2 lignes à .vimrc ( note : en fait j’ai corrigé et n’ai laissé que la ligne utf-8 )

```plaintext
set fileencoding=utf-8
set fileencoding=latin1

```

ça a l’air de fonctionner correctement , _vim_ faisant le bon choix lui-même : testé sur seulement 2 fichiers , dont le fautif , donc , à suivre .

---

<div class="post-metadata">

**Author:** ![zao](https://www.debian-fr.org/letter_avatar_proxy/v4/letter/z/ce7236/32.png) [@zao](https://www.debian-fr.org/u/zao)\
**Post date:** [Février 5, 2023, 7:57 UTC](https://www.debian-fr.org/t/encodage-de-lecture-inapproprie-editeur-vim-gtk3/87809/9 "2023-02-05T07:57:05Z")

</div>

> [@zao](#):
>
> ça a l’air de fonctionner correctement

sauf qu’avec un autre debian 11 ça ne marche pas .

En fait j’ai 3 installations debian 11 et 3 réponses différentes pour ce fichier généré par vim :

- 2 écrivent en latin1 : 1 peut être corrigé par set filencoding=utf-8 mais pas l’autre
- 1 écrit en utf-8 et donc la lecture dans le terminal est correcte

en reprenant les commentaires de [stackoverflow](https://stackoverflow.com/questions/1174847/how-to-set-the-character-encoding-for-a-file-in-vim) , que j’avais mal interprétés d’ailleurs , la solution qui m’assure que la fabrication de ce fichier sera bien en utf-8 , même pour le récalcitrant , est de ne pas laisser le choix de l’encodage et d’imposer , dans le fichier _.vimrc_ **set fileencodings=utf-8**.  
Je pense qu’il y a donc un autre problème plus basique et que je ne corrige que le symptôme . Mais bon , en tant qu’éditeurs purs les 3 vim ( je suis repassé à **vim** ) fonctionnent très bien et c’est le principal .
