Suite à un message sur la liste des Mongueurs de Perl à propos d'encodage de caractères, j'ai fait un petit historique des jeux de caractères que j'ai utilisés depuis 1989 :

J'étais en full cp437 sous MS-DOS.

Je suis passé au cp437/cp1252 avec Windows. J'ai résisté au passage à cp850 pour garder le jeu complet de caractères semi-graphiques de cp437.

Avec Unix/Linux j'ai ajouté iso-8859-1 vers 1993.

Avec Windows NT, j'ai abandonné finalement cp437 au profit de cp850, toujours utilisé dans les fenêtres DOS.

L'euro est apparu et je suis passé à iso-8859-15 sous Linux.

Depuis Windows 2000, RegEdit 5 enregistre ses fichiers en « Unicode » (comme dit Microsoft), c'est à dire ucs-2le. C'est donc un encodage de plus que j'utilise régulièrement.

Coté Linux, j'ai abandonné iso-8859-{1,15} pour utf-8 (merci à RedHat d'avoir initié ce changement sur l'ensemble d'une distrib). Mon Nokia N800 est aussi en UTF-8. Malheureusement je bosse encore aussi sous Solaris et AIX qui ne connaissent pas UTF-8 pour les locales de base.

Les encodages de caractères que j'utilise actuellement régulièrement sont donc ASCII, utf-8, cp1252, cp850, ucs-2le et iso-8859-1.

Bref, le « full utf-8 », c'est à dire un environnement où toutes les données texte sont uniquement encodées en UTF-8, est pour moi un mythe. La compatibilité avec les anciennes applications, les anciens formats de fichiers ou les systèmes d'exploitation où UTF-8 n'est pas l'encodage primaire nécessite la manipulation de multiples encodages.

Ma solution : avoir la boîte à outils qui me permette d'éditer les fichiers de la façon la plus transparente possible (détection au chargement d'un fichier texte) et de faire facilement les transformations nécessaires. Et si on travaille sur plusieurs plate-formes, il faut que la boîte à outils soit également portable.

Ma boîte à outil, c'est Vim, avec ces paramètres :

" List of encodings for autodetect
if has('win32') || has('win64')
  set fileencodings=ucs-bom,utf-8,cp1252
else
  set fileencodings=ucs-bom,utf-8,iso88591
endif