Excel et encodage des caractères lors des sauvegardes

L’option « enregistrer sous »/options web d’excel v2016 permet théoriquement d’utiliser les encodages standards UTF8, unicode…

C’est un peu plus compliqué que cela car, en ouvrant les fichiers avec un éditeur hexadécimal, on voit des différences entre deux fichiers textes.

Enregistrer sous « Fichier texte UNICODE »

Quelque soit l’option « web » choisie (UTF8, unicode, occidental ISO ou windows), le fichier commence par la séquence FF FE correspondant à UCS-2 Little Endian. Après quoi, tous les caractères sont enregistrés en laissant un octet sur deux vide, sauf pour le symbole €. Exemple: a est codé (61 00); é (E9 00), le € (AC 20), sa valeur sous unicode en inversant les deux octets.
Aucune différence visible entre les différentes « options web ».

Enregistrer sous « Fichier texte (tabulation) »

Pas de séquence de démarrage (BOM) comparable en début de fichier: on embraye immédiatement avec les valeurs. Le é est codé E9, le € (AC 20), sa valeur sous unicode en inversant les deux octets. Contrairement au cas précédent, tous les octets sont utilisés en séquence, et non uniquement pour le symbole  €.

Enregistrer sous « Fichier texte (prn) pour lotus »

Pas de séquence de démarrage (BOM) en début de fichier: on embraye immédiatement avec les valeurs. Le é est codé E9, le € est codé 80, on suit l’encodage spécifique windows cp1252.

Enregistrer sous « Fichier texte (macintosh) »

Pas de séquence de démarrage (BOM) en début de fichier: on embraye immédiatement avec les valeurs. Le é est codé 8E, le € DB, le fichier suit l’encodage Mac OS roman, ce qui est au moins logique….

Enregistrer sous « Fichier texte (MSDOS) »

Pas de séquence de démarrage (BOM) en début de fichier: on embraye immédiatement avec les valeurs. Le é est codé 82, le € 3F et n’est pas affiché sous notepad++. Le caractère n’est visiblement pas encodé, car sa valeur est perdue même si on réouvre le fichier sous excel. L’encodage semble suivre la table IBM OEM 850 ou cp850.

Bref, le seul moyen d’obtenir de l’UTF 8 depuis excel semble être d’enregistrer le fichier excel en tant que page web….

 

Note:

Pour utiliser les fichiers texte « tabulation » tels qu’enregistrés par excel sous latex, cet environnement semble bien opérationnel:

\newenvironment{excelTXTinput}{%
    \inputencoding{latin9} %utilise l'encodage des fichiers TXT excel "tabulation"
    \DeclareInputText{"80}{\euro} %dans le fichier de sortie excel hexa 80
    \DeclareInputText{164}{\euro}
    \DeclareInputText{25}{\symbol{25}} %symbole degré °
    }%
    {\inputencoding{utf8}%revient à l'encodage utf 8 après l'environnement
    }

 

Ce contenu a été publié dans Technique, avec comme mot(s)-clé(s) , , , . Vous pouvez le mettre en favoris avec ce permalien.

Les commentaires sont fermés.