Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

Les deux révisions précédentes Révision précédente
Prochaine révision
Révision précédente
tutoriel:encodage_caracteres [Le 17/11/2010, 15:07]
Julientroploin mise en forme (niveaux de titres incorrects, trop de notes,...) déplacement d'informations
tutoriel:encodage_caracteres [Le 04/06/2020, 10:40] (Version actuelle)
154.126.80.154 [Encodages standards]
Ligne 1: Ligne 1:
-{{tag>​encodage ​utf8 BROUILLON}}+{{tag>​encodage ​ BROUILLON}}
  
 ---- ----
Ligne 5: Ligne 5:
 ====== FAQ sur les encodages de caractères ===== ====== FAQ sur les encodages de caractères =====
  
 +<note important>​
 +Cette page est en construction,​ elle tente de rassembler des explications simples et les principaux outils pour s'en sortir. **C'​est aussi un appel à contributions pour les gourous afin de trier les contradictions qui jonchent les forums.**
 +</​note>​
  
-<note warning>​Cette page est en constructionelle tente de rassembler ​des explications simples et les principaux outils pour s'en sortir**C'​est aussi un appel à contribution pour les gurus afin de trier les contradictions qui jonchent les forums**</​note>​+Vous êtes perdu entre policesencodages ​des sigles comme latin, utf8, unicode, iso8859-15, etc. ?
  
-Vous êtes perdu entre polices, encodages des sigles comme latin, utf8, unicode, iso8859-15, ... ? +Cette page a pour l'​ambition de vous permettre de comprendre pourquoi vous trouvez parfois :​ 
- +  * des fichiers textes, des pages web qui sont ou deviennent illisibles (notamment dès qu'il y a des accents) ; 
-Cette page a pour l'​ambition de vous permettre de comprendre pourquoi vous trouvez parfois : +  * des signes ​comme Ǐ, Ǐ, ÿ, ǚ, ♥ dans vos données ; 
-  * des fichiers textes,des pages web qui sont ou deviennent illisibles (notamment dès qu'il y a des accents), +  * des noms de fichiers apparaissant avec des signes cabalistiques ; 
-  * des signes ​commes ​Ǐ, Ǐ, ÿ,  ǚ,  ♥ dans vos données +  * des affichages de données différents selon les programmes utilisés 
-  * des noms de fichiers apparaissant avec des signes cabalistiques, +  * etc.
-  * des affichages de données différents selon les programmes utilisés ​, ...+
   ​   ​
 et de vous permettre de vous en sortir. et de vous permettre de vous en sortir.
  
- +<note tip> 
-<note tip>Vous êtes déjà fatigué à ce point par la lecture de cette page, voici des "palliatifs" +Vous êtes déjà fatigué à ce point par la lecture de cette page, voici des « palliatifs » : 
-     ​* 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)//​ +  * 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)//​ ; 
-     ​* n'​écrivez et ne lisez que des fichiers sans accents, et sans apostrophes //(même remarques, sur une plage de caractères ces encodages sont normalement équivalents)//​+   ​* n'​écrivez et ne lisez que des fichiers sans accents, et sans apostrophes //(même remarques, sur une plage de caractères ces encodages sont normalement équivalents)//​.
 </​note>​ </​note>​
  
Ligne 29: Ligne 31:
 **Un texte, suite de caractères,​ n'a de sens que si l'on connaît son encodage.** **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. +  - L'​encodage par défaut sous Windows (interface graphique) est [[wpfr>​Windows-1252|cp1252]]
- +  ​- ​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 États-Unis. 
-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. +  ​- ​Aucun éditeur n'est capable ​— et ne le sera jamais ​— de déterminer l'​encodage d'un fichier texte. 
- +  ​- ​Les bonnes applications peuvent travailler indifféremment avec différents encodages (généralement,​ ce sont ASCII[[wpfr>​Windows-1252|cp1252]][[wpfr>​ISO_8859-1|ISO-8859-1]] et [[wpfr>​Unicode|UTF-8]]ISO-8859-15 est moins utilisé) pour les utilisateurs de langues latines et anglo-saxonnes. 
-3) Aucun éditeur n'est capable ​et ne le sera jamais ​de déterminer l'​encodage d'un fichier texte. +  - Du point 4il découle que les systèmes d'​exploitation sont cohérents, les problèmes qui se posent sont généralement dus à une méconnaissance du fonctionnement des encodages. 
- +  ​- ​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, ​etc.) en conformité avec les-dits fichiers. 
-4) Les bonnes applications 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. +  ​- ​**Attention :​** le web est archi bourré d'​informations fausses à ce sujet. 
- +  ​- ​**Attention (2) :** Se méfier comme de la peste de l'​apparence d'une conversion réussie. Les encodages étant similaires pour de nombreux caractères,​ de nombreux utilisateurs croient en voyant le texte que la conversion était correcte ou suffisante alors que les choix des options de conversion sont erronés. 
-5) De 4il découle que les systèmes d'​exploitation sont cohérents, les problèmes qui se posent sont généralement dus à une méconnaissance du fonctionnement des encodages. +  ​- ​Une bonne introduction / explication (en anglais) sur ce que sont les encodages est ici : 
- +[[http://​www.joelonsoftware.com/​articles/​Unicode.html]]
-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 de la peste de l'​apparence d'une conversion réussie. Les encodages étant similaires pour de nombreux caractères,​ de nombreux utilisateurs croient en voyant le texte que la conversion était correcte ou suffisante alors que les choix des options de conversion sont erronés. +
- +
-9) Une bonne introduction / explication (en anglais) sur ce que sont les encodages est ici : +
-http://​www.joelonsoftware.com/​articles/​Unicode.html +
  
 +La version en français:​http://​french.joelonsoftware.com/​Articles/​Unicode.html
 ===== Un peu de théorie ===== ===== Un peu de théorie =====
-====Préliminaire:====+ 
 +==== Préliminaire ====
  
 L'​encodage dont il est question ici n'a de sens que pour les fichiers texte (ou plus exactement codés en texte et non en binaire). L'​encodage dont il est question ici n'a de sens que pour les fichiers texte (ou plus exactement codés en texte et non en binaire).
-Cela inclut les codes sources, les fichiers log, les noms de fichiers (système de fichiers)...+Cela inclut les codes sources, les fichiers log, les noms de fichiers (système de fichiers), etc.
  
 Pour des fichiers binaires, il existe différents types d'​encodage,​ mais qui n'ont rien à voir avec le sujet de cette page.  Pour des fichiers binaires, il existe différents types d'​encodage,​ mais qui n'ont rien à voir avec le sujet de cette page. 
  
- +L'​objectif de l'​encodage est d'​**associer un numéro pour chaque caractère d'une langue**.
-L'​objectif de l'​encodage est d'​**associer un numéro pour chaque caractère d'une langue.**+
  
 <​note>​ <​note>​
-En informatique,​ un codage de caractères est un code qui associe un jeu de caractères d'une langue naturelle (comme un alphabet ) avec un jeu de quelque chose d'​autre,​ comme par exemple des nombres ou des signaux électriques. Par exemple, le code Morse (qui associe l'​alphabet latin à une série de pressions longues et de pressions courtes sur le manipulateur morse du télégraphe) et le code ASCII (qui code les lettres, les chiffres et d'​autres symboles comme des entiers codés sur 7 bits) sont des codages de caractères.</​note> ​+En informatique,​ un codage de caractères est un code qui associe un jeu de caractères d'une langue naturelle (comme un alphabet) avec un jeu de quelque chose d'​autre,​ comme par exemple des nombres ou des signaux électriques. Par exemple, le code Morse (qui associe l'​alphabet latin à une série de pressions longues et de pressions courtes sur le manipulateur morse du télégraphe) et le code ASCII (qui code les lettres, les chiffres et d'​autres symboles comme des entiers codés sur 7 bits) sont des codages de caractères.</​note> ​
  
-Il est indispensable,​ pour l'​échange d'​informations de **préciser le codage utilisé.**+Il est indispensable,​ pour l'​échange d'​informations de **préciser le codage utilisé**.
  
-Ne pas le faire peut rendre un document difficilement lisible (remplacement des lettres accentuées par d'​autres suites de caractères, ​...). [[http://​fr.wikipedia.org/​wiki/​Codage_de_caractères|plus ici]]+Ne pas le faire peut rendre un document difficilement lisible (remplacement des lettres accentuées par d'​autres suites de caractères, ​etc.). [[wpfr>Codage_de_caractères|plus ici]]
  
  
-====L'​ancêtre:​ l'​ASCII ====+==== L'​ancêtre :​ l'​ASCII ====
  
-La norme de base est l’[[http://​fr.wikipedia.org/​wiki/​American_Standard_Code_for_Information_Interchange|ASCII]]. Cette norme (normalisée par l’[[http://​fr.wikipedia.org/​wiki/​American_Standard_Code_for_Information_Interchange|ANSI]] en 1986) n'​utilise que 7 bits et permet de coder 128 caractères (26*2 lettres + 10 chiffres + un peu de ponctuation + des caractères non affichables comme les sauts de lignes, mais pas d'​accents).+La norme de base est l’[[wpfr>American_Standard_Code_for_Information_Interchange|ASCII]]. Cette norme (normalisée par l’[[wpfr>American_Standard_Code_for_Information_Interchange|ANSI]] en 1986) n'​utilise que 7 bits et permet de coder 128 caractères (26×2 lettres + 10 chiffres + un peu de ponctuation + des caractères non affichables comme les sauts de lignes, mais pas d'​accents).
  
-Les ordinateurs modernes représentent chaque caractère avec au moins 8 bits (un octet), les codes 128 à 255 sont disponibles pour étendre l'​ASCII (à des caractères accentués notamment). Ces extensions portent le nom de «[[http://​fr.wikipedia.org/​wiki/​Page_de_code|page de code]]» ([[http://​en.wikipedia.org/​wiki/​Code_page|code page]] en anglais).+Les ordinateurs modernes représentent chaque caractère avec au moins 8 bits (un octet), les codes 128 à 255 sont disponibles pour étendre l'​ASCII (à des caractères accentués notamment). Ces extensions portent le nom de « [[wpfr>Page_de_code|page de code]]» (//[[wp>Code_page|code page]]// en anglais).
  
 Chaque //page de code// génère de fait un encodage différent mais dont les 128 premiers caractères sont identiques et dont certains des suivants se recoupent parfois. Chaque //page de code// génère de fait un encodage différent mais dont les 128 premiers caractères sont identiques et dont certains des suivants se recoupent parfois.
Ligne 78: Ligne 72:
 Pour résumer, l'​ASCII est le standard de compatibilité mais ne supporte pas les accents. Pour résumer, l'​ASCII est le standard de compatibilité mais ne supporte pas les accents.
  
-Pour des information sur les systèmes de codage plus récents (1991), reportez vous aux pages [[http://​fr.wikipedia.org/​wiki/​Unicode|Unicode]], [[http://​fr.wikipedia.org/​wiki/​UTF-8|UTF-8]] et [[http://​fr.wikipedia.org/​wiki/​UTF-16|UTF-16]]+Pour des information sur les systèmes de codage plus récents (1991), reportez-vous aux pages [[wpfr>Unicode]], [[wpfr>UTF-8]] et [[wpfr>UTF-16]].
  
 ===== Un peu de méthodologie ===== ===== Un peu de méthodologie =====
-Objectif: ​ + 
 +Objectif :​
   * connaître l'​encodage du fichier source   * connaître l'​encodage du fichier source
   * garder la cohérence de l'​encodage   * garder la cohérence de l'​encodage
  
 ==== Encodages standards ==== ==== Encodages standards ====
-Windows et les applications prévues pour y fonctionner utilisent par défaut le [[http://​fr.wikipedia.org/​wiki/​Windows-1252|cp1252]],​ une variante de l'​[[http://​fr.wikipedia.org/​wiki/​ISO_8859-1|iso 8859-1]] (en grande partie similaires). 
  
-Sous Ubuntu, l'​UTF-8 est l'​encodage par défaut de toutes ​(?) les applications courantes.+Windows et les applications prévues pour y fonctionner utilisent par défaut le [[wpfr>​Windows-1252|cp1252]],​ une variante de l'​[[wpfr>​ISO 8859-1]] (en grande partie similaires). 
 + 
 +Sous Ubuntu, l'​UTF-8 est l'​encodage par défaut de toutes les applications courantes, ou presque.
  
 FIXME FIXME
   * Ubuntu: utf8 (depuis //​Breezy?//​)   * Ubuntu: utf8 (depuis //​Breezy?//​)
-  * Windows 98 (FAT32): ​+  * Windows 98 (FAT32): ​cp1252
   * Windows XP (ntfs): cp1252. ??   * Windows XP (ntfs): cp1252. ??
 +  * Windows 7 : iso-8859-1
 +  * et pour Windows 10?
    
  
 ==== Identification ==== ==== Identification ====
  
-  * Dans un fichier ​html correctement rédigé, l'​encodage est identifié par le rédacteur dans l'​en-tête de la page, il suffit donc de parcourir les 1eres lignes du code source de celle-ci (Ctrl+U pour y accéder) +  * Dans un fichier ​HTML correctement rédigé, l'​encodage est identifié par le rédacteur dans l'​en-tête de la page, il suffit donc de parcourir les premières ​lignes du code source de celle-ci (Ctrl+U pour y accéder). 
-  * Dans un fichier texte, //a priori// aucune reconnaissance automatique n'est possible. Néanmoins, il y a quelques possibilités de deviner le contenu lorsque certains caractères sont présents (commande file -i)+  * Dans un fichier texte, //a priori// aucune reconnaissance automatique n'est possible. Néanmoins, il y a quelques possibilités de deviner le contenu lorsque certains caractères sont présents (commande file -i) 
 <​code>​ <​code>​
       file -i *       file -i *
Ligne 106: Ligne 105:
     c.txt: text/plain; charset=utf-8     c.txt: text/plain; charset=utf-8
 </​code>​ </​code>​
-FIXME explication du retour de la commande à clarifier+ 
 +La commande ​retourne le type du fichier, par exemple //​text/​xml//​ s'il s'agit d'un fichier XML, puis il indique le type d'​encodage ​à la suite de "​charset="​ : par exemple, dans le cas de c.txt, l'​encodage de caractère détecté est //utf-8//.
  
 ==== Conversions ==== ==== Conversions ====
  
-**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 faites des tests avant d'​aller trop loin)+**Attention :** une conversion mal appropriée ou appliquée deux fois successivement risque de corrompre définitivement votre fichier (c'​est-à-dire, ​impossibilité de revenir en arrière par une conversion inversée)Sauvegardez ​donc vos données et faites des tests avant d'​aller trop loin.
  
-Exemple de script permettant la converson ​d'un fichier txt de utf8 vers iso8859-15 : +Exemple de script permettant la conversion ​d'un fichier txt de UTF-8 vers ISO 8859-15 : 
-<​code>​+ 
 +<​code ​bash>
 #!/bin/bash #!/bin/bash
 for i in *.txt for i in *.txt
Ligne 121: Ligne 122:
 </​code>​ </​code>​
  
-Pour s'y retrouver dans les dénominations : une [[http://​docs.python.org/​lib/​standard-encodings.html|table]]+Pour s'y retrouver dans les dénominations : une <del>[[http://​docs.python.org/​lib/​standard-encodings.html|table]]</​del>​. 
 + 
 +=== Outils de migration === 
 + 
 +<note important>​ 
 +Dans tous les cas, il faut bien différencier les opérations :​ 
 +  * encodage des **noms** de fichiers (pour le système de fichiers) ;​ 
 +  * encodage du **contenu** des fichiers. 
 +</​note>​ 
 + 
 +  * utf8-migration-tool (Outils de migration UTF-8) 
 +  * konq-toutf8 (UTF-8 encoding utility service menu for Konqueror) 
 +  * [[:​iconv|iconv]] (commande en ligne, dans le package **convmv** voir https://​wiki.ubuntu.com/​UTFEightMigrationTool) 
 +  * l'​utilitaire recode : [[http://​pwet.fr/​man/​linux/​commandes/​recode]],​ très puissant.
  
  
 ==== Réglage des éditeurs de textes ==== ==== Réglage des éditeurs de textes ====
-La plupart des [[../editeur_de_texte|é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)+ 
 +La plupart des [[:editeur_de_texte|éditeurs de textes]] sont capables de lire ou écrire dans différents encodages. Il faut trouver l'​option d'​affichage adéquate (usuellement dans //Outils ​→ Encodage//).
  
 ==== Cas des partitions de disques ==== ==== Cas des partitions de disques ====
-Pour une [[../​partitions|partition]] il faut préciser un encodage pour décrire les **noms de fichiers** (chaque fichier pouvant utiliser des encodages différents) 
  
-Sous linux, il faut indiquer l'encodage ​au montage ​de la partition ​(voir [[../​mount_fstab|/​etc/​fstab]]).+Pour une [[:​partitions|partition]], il faut préciser un encodage ​pour décrire les **noms ​de fichiers** ​(chaque fichier pouvant utiliser des encodages différents).
  
-==== Outils ​de migration====+Sous GNU/Linux, il faut indiquer l'​encodage au montage ​de la partition (voir [[:​mount_fstab|/​etc/​fstab]]).
  
-<note warning>​ +===== Liens utiles =====
-Dans tous les cas, il faut bien différencier les opérations  +
-  * encodage des **noms** de fichiers (pour le système de fichiers) +
-  * encodage du **contenu** des fichiers +
-</​note>​+
  
-  * utf8-migration-tool (Outils de migration UTF-8) +==== Général ====
-  * konq-toutf8 (UTF-8 encoding utility service menu for Konqueror) +
-  * iconv (commande en ligne, dans le package **convmv** voir https://​wiki.ubuntu.com/​UTFEightMigrationTool)+
  
-=== Liens utiles === +  ​* [[http://​www.joelonsoftware.com/​articles/​Unicode.html|The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)]] ​**(en)** 
-Général:​ +  * [[http://​french.joelonsoftware.com/​Articles/​Unicode.html|Le minimum absolu que tout développeur doit absolument, positivement savoir sur Unicode et les jeux de caractères (aucune excuse !)]] **(fr)** 
-  ​    ​[[http://​www.joelonsoftware.com/​articles/​Unicode.html|The Absolute Minimum Every Software Developer Absolutely, Positively Must Know About Unicode and Character Sets (No Excuses!)]] +  * [[https://​wiki.ubuntu.com/​UTFEightMigrationTool|UTFEightMigrationTool]] **(en)** 
-  *     ​[[https://​wiki.ubuntu.com/​UTFEightMigrationTool|UTFEightMigrationTool]]+  * [[wp>​Character_encoding]] **(en)** 
 +  * [[wpfr>​Codage_de_caractères]] **(fr)** 
 +  * [[http://​www.windowslinux.net/​encodage| un article clair sur l'​encodage sur le site windowslinux.net]] 
 +  * [[http://​www.pigné.be/​Thibaut/​cours/​LeWeb/​mini_cours_html/​codage.htm#​lettres26plus16| Les 84 caractères de l'​alphabet français]]
  
-  *     ​[[http://​en.wikipedia.org/​wiki/​Character_encoding]] +==== Description d'​encodages particuliers ====
-  *     ​[[http://​fr.wikipedia.org/​wiki/​Codage_de_caractères]]+
  
-Description d'​encodages particuliers:​ +  ​* [[wpfr>CP1252]] ​**(fr)** 
-  ​    ​[[http://​fr.wikipedia.org/​wiki/​CP1252]] +  * [[wpfr>American_Standard_Code_for_Information_Interchange|ASCII]] ​**(fr)**
-  *     ​[[http://​fr.wikipedia.org/​wiki/​American_Standard_Code_for_Information_Interchange|ASCII]]+
  
-Sources d'​information les aspects Linux: +==== Sources d'​information les aspects Linux ==== 
-  *     ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=100832]] + 
-  *     ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=231060]] +  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=100832]] ​**(fr)** 
-  *     ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=266393]]+  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=231060]] ​**(fr)** 
 +  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=266393]] ​**(fr)**
  
 ---- ----
-//​Contributeurs : + 
---- //[[:​utilisateurs:​fnx|fnx]] Le 31/10/200914:36// +//​Contributeurs ​principaux : [[:​utilisateurs:​fnx]], ​[[:​utilisateurs:Rom]][[:​utilisateurs:​aleph]], [[:​utilisateurs:​bcag2]].//​
-Merci à @Rom, aleph+
  • tutoriel/encodage_caracteres.1290002847.txt.gz
  • Dernière modification: Le 18/04/2011, 14:51
  • (modification externe)