Cette page est en cours de rédaction.
Apportez votre aide…

Ceci est une ancienne révision du document !



FAQ sur les encodages de caractères

Vos fichiers textes,vos pages web sont ou deviennent illibles notamment dès qu'il y a des accents,

Les noms de vos fichiers apparaissent avec des signes cabalistiques,

Suivants les programmes utilisés vous n'avez pas les mêmes affichages de données, …

Vous êtes perdu entre polices, encodages des sigles comme latin, utf8, unicode, iso8859-15, …

Alors cette page a pour l'ambition de vous permettre de vous en sortir, et au moins de comprendre ce que vous faites

Cette page est en construction, elle tente de rassembler des explications simples et les principaux outils pour s'en sortir

NB: Comme je n'y entends pas grand chose non plus, cette page est aussi un appel à contribution pour les gurus afin de trier les contradictions qui jonchent les forums

Vous êtes déjà fatigué à ce point par la lecture de cette page, voici des "solutions" rapides
  • ne codez et ne lisez qu'en anglais (comme il n'y a pas d'accents, les mauvais réglages sont souvent invisibles, d'où peut-être la légèreté du traitement du problème pour certains programmeurs utilisant des machines configurées en américain)
  • écrivez et ne lisez que des fichiers sans accents, et sans apostrophes (même remarques, sur un plage de caractères ces encodages sont normalement équivalents)

Règle de base: un texte, suite de caractères, n'a de sens que si l'on connaît son encodage.

1) L'encodage par défaut sous Windows (interface graphique) est cp1252.

2) L'encodage par défaut d'une console DOS est cp850 pour les systèmes de l'Europe de l'Ouest (Western Europe) ou cp437 pour les Etats-Unis.

3) Aucun éditeur n'est capable - et ne le sera jamais - de déterminer l'encodage d'un fichier texte.

4) Les systèmes Linux et Windows (et d'autres) ou plutôt les bonnes applications de ces systèmes - peuvent travailler indifféremment avec différents encodages (généralement, ce sont ascii, cp1252, iso-8859-1 et utf-8, iso-8859-15 est moins utilisé) pour les utilisateurs de langues latines et anglo-saxonnes).

5) De 4) il découle que ces systèmes sont cohérents, les problèmes qui se posent sont généralement dus à une méconnaissance du fonctionnement des encodages.

6) Il est faux de croire qu'il faille changer l'encodage d'un fichier pour passer d'un système à un autre. Si l'échange de fichiers est régulier, il est préférable de régler ses outils de travail (éditeurs, …) en conformité avec les dits fichiers.

7) Attention: le web est archi bourré d'informations fausses à ce sujet.

8) Attention (2): Se méfier comme la peste de l'apparence d'une conversion réussie. Les encodages étant similaire pour de nombreux caractères, de nombreux utilisateurs croient en voyant le texte que la conversion était correcte ou suffisante alors que les choix de options de conversion sont erronés.

9) Une bonne introduction/ explication sur ce que sont les encodages est ici: http://www.joelonsoftware.com/articles/Unicode.html

L'encodage dont il est question ici n'a de sens que pour les fichiers texte (ou plus exactement codés en ASCII et non en binaire). Cela inclut les codes sources, les fichiers log, les noms des fichiers (fat)

Pour des fichiers binaires, il y a différents type d'encodage, mais qui n'ont rien à voir avec le sujet de cette page.

  • fichier html: voir entete (si bien identifiée par le rédacteur)
  • fichier texte: a priori aucune reconnaissance automatique possible. Néanmoins, il y a quelques possibilités de deviner le contenu lorsque certains caractères sont présents(commande file -i)
      file -i *.txt
    a.txt:     text/x-pascal; charset=us-ascii
    b.kml:     text/xml
    c.txt: text/plain; charset=utf-8

Attention : une conversion mal appropriée ou appliquée deux fois successivement risque de corrompre définitivement votre fichier (i.e. impossibilité de revenir en arrière par une conversion inversée. (sauvegardez donc vos données et faite des tests avant d'aller trop loin)

Exemple

#!/bin/bash
for i in *.txt
do
   iconv -f utf8 -t iso8859-15 "$i" > "$i".new
done

La plupart des éditeurs de textes sont capables de lire/écrire dans différents encodages. Il faut trouver l'option d'affichage adéquate (usuellement dans Outils > Encodage)

Pour vos projets restez homogènes (cf. xx)

Concepts

il faut indiquer l'encodage lorsque la partition est montée (voir /etc/fstab).

Encodages standards

Windows utilise par défaut le [url=http://fr.wikipedia.org/wiki/Windows-1252]cp1252[/url], une variante de l'[url=http://fr.wikipedia.org/wiki/ISO_8859-1]iso 8859-1[/url] (en grande partie similaires).

FIXME

  • Ubuntu: utf8 (depuis Breezy?
  • Windows 98 (FAT32):
  • Windows XP (ntfs): cp1252. ??

Outils

  • utf8-migration-tool (Outils de migration UTF-8)

(! Bien différencier les opérations

  • encodage des noms de fichiers
  • encodage du contenu des fichiers)
  • konq-toutf8 (UTF-8 encoding utility servicemenu for Konqueror)

Liens utiles

  • tutoriel/encodage_caracteres.1256992070.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)