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 16/11/2010, 23:25]
MrWaloo corrections orthographiques et de syntaxe
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 =====
  
-  * Vos fichiers textes,vos pages web sont ou deviennent illibles notamment dès qu'il y a des accents, +<note important>​ 
-  * Des signes commes ǏǏ, ÿ,  ǚ,  ♥ dans vos données +Cette page est en constructionelle 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.** 
-  * Les noms de vos fichiers apparaissent avec des signes cabalistiques,​ +</​note>​
-  * 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, ...+
  
-Cette page a pour l'​ambition de vous permettre de vous en sortiret au moins de comprendre ce que vous faites.+Vous êtes perdu entre policesencodages des sigles comme latin, utf8, unicode, iso8859-15, etc. ?
  
-<note warning>Cette page est en constructionelle tente de rassembler ​des explications simples et les principaux outils pour s'en sortir.+Cette page a pour l'​ambition de vous permettre de comprendre pourquoi vous trouvez parfois :​ 
 +  * des fichiers textesdes pages web qui sont ou deviennent illisibles (notamment dès qu'il y a des accents) ;​ 
 +  * des signes comme Ǐ, Ǐ, ÿ, ǚ, ♥ dans vos données ;​ 
 +  * des noms de fichiers apparaissant avec des signes cabalistiques ;​ 
 +  * des affichages de données différents selon les programmes utilisés ;​ 
 +  * etc. 
 +   
 +et de vous permettre de vous en sortir.
  
-//NB: Comme je n'​y ​entends ​pas grand chose non pluscette page est aussi un appel à contribution pour les gurus afin de trier les contradictions qui jonchent les forums//+<note tip> 
 +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 ​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)//.
 </​note>​ </​note>​
  
-<note tip>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)//​ 
-     * 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>​ 
  
 +===== Résumé,​Règles de base =====
  
-===== Résumé ===== +**Un texte, suite de caractères,​ n'a de sens que si l'on connaît son encodage.**
-<note help> +
-__Règles 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.+  - 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. 
 +  - 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. 
 +  - Du point 4, il 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. 
 +  - **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. 
 +  - Une bonne introduction / explication (en anglais) sur ce que sont les encodages est ici : 
 +[[http://​www.joelonsoftware.com/​articles/​Unicode.html]]
  
-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.+La version en français:​http://​french.joelonsoftware.com/​Articles/​Unicode.html 
 +===== Un peu de théorie =====
  
-3) Aucun éditeur n'est capable - et ne le sera jamais - de déterminer l'​encodage d'un fichier texte.+==== Préliminaire ====
  
-4) Les systèmes Linux et Windows ​(et d'​autresou plutôt ​les bonnes applications de ces systèmes - peuvent ​ travailler indifféremment avec différents encodages (généralementce sont asciicp1252, iso-8859-1 et utf-8, iso-8859-15 est moins utilisé) pour les utilisateurs ​de langues latines et anglo-saxonnes.+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 sourcesles fichiers log, les noms de fichiers (système de fichiers), etc.
  
-5) De 4) il découle que ces systèmes sont cohérentsles problèmes ​qui se posent sont généralement dus à une méconnaissance du fonctionnement des encodages.+Pour des fichiers binaires, ​il existe différents types d'​encodagemais qui n'ont rien à voir avec le sujet de cette page
  
-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.+L'​objectif ​de l'​encodage ​est d'**associer ​un numéro ​pour chaque caractère ​d'une langue**.
  
-7) Attention: le web est archi bourré ​d'informations fausses ​à ce sujet.+<​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> ​
  
-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.+Il est indispensable,​ pour l'échange ​d'informations ​de **préciser ​le codage utilisé**.
  
-9Une bonne introduction / explication sur ce que sont les encodages est 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]]
-http://​www.joelonsoftware.com/​articles/​Unicode.html+
  
-</​note>​ 
  
-===== Un peu de théorie ​===== +==== L'​ancêtre :​ l'​ASCII ​====
-Préliminaire:​+
  
-L'​encodage dont il est question ici n'de sens que pour les fichiers texte (ou plus exactement codés en texte et non en binaire). +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 lignesmais pas d'​accents).
-Cela inclut ​les codes sourcesles fichiers log, les noms de fichiers (système de fichiers)+
  
-Pour des fichiers binairesil existe différents types d'encodage, mais qui n'ont rien à voir avec le sujet de cette page. +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.
  
-**L'​objectif de l'encodage ​est d'​associer un numéro pour chaque caractère d'une langue.**+Pour résumer, ​l'ASCII est le standard de compatibilité mais ne supporte pas les accents.
  
-<​note>​ +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]].
-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'​autrecomme par exemple des nombres ou des signaux électriques. Par exemplele 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.+
  
-__Il est indispensable,​ pour l'​échange d'​informations ​de préciser le codage utilisé.__+===== Un peu de méthodologie =====
  
-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]] +Objectif 
-</​note> ​+  * connaître l'​encodage du fichier source 
 +  * garder la cohérence de l'​encodage
  
-L'​ancêtre:​ l'​[[http://​fr.wikipedia.org/​wiki/​American_Standard_Code_for_Information_Interchange|ASCII]]+==== Encodages standards ====
  
-La norme de base est l’ASCII. Cette norme 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).+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).
  
-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 ​de nom de [[http://​en.wikipedia.org/​wiki/​Code_page|code page]] ​ou [[http://​fr.wikipedia.org/​wiki/​Page_de_code|page de code]]. +Sous Ubuntu, l'UTF-8 est l'​encodage par défaut ​de toutes les applications courantes, ​ou presque.
- +
-Chaque //page de code// génère de fait un encodage different mais dont les 128 premiers caractères sont identiques et dont certains des suivants se recoupent parfois.+
  
 FIXME FIXME
-ASCIIstandard de compatibilité,​ sans accent.+  * Ubuntuutf8 (depuis //​Breezy?//​) 
 +  * Windows 98 (FAT32): cp1252 
 +  * Windows XP (ntfs): cp1252?? 
 +  * Windows 7 : iso-8859-1 
 +  * et pour Windows 10? 
 + 
  
-ANSI (Windows)+==== Identification ====
  
-Unicode+  * 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) :
  
-UTF-8 
- 
-UTF-16 
- 
-===== Un peu de méthodologie ===== 
-Objectif:  ​ 
-  * connaître l'​encodage du fichier source 
-  * garder la cohérence de l'​encodage 
- 
- 
-===== Identification ===== 
- 
-  * fichier html: voir entête (si l'​encodage est bien identifié par le rédacteur) 
-  * 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 104: Ligne 105:
     c.txt: text/plain; charset=utf-8     c.txt: text/plain; charset=utf-8
 </​code>​ </​code>​
-===== 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)+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 ====
  
-Exemple +**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. 
-<​code>​+ 
 +Exemple ​de script permettant la conversion d'un fichier txt de UTF-8 vers ISO 8859-15 : 
 + 
 +<​code ​bash>
 #!/bin/bash #!/bin/bash
 for i in *.txt for i in *.txt
Ligne 117: Ligne 122:
 </​code>​ </​code>​
  
 +Pour s'y retrouver dans les dénominations : une <​del>​[[http://​docs.python.org/​lib/​standard-encodings.html|table]]</​del>​.
  
-Pour s'y retrouver dans les dénominations : une [[http://​docs.python.org/​lib/​standard-encodings.html|table]]+=== 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>​
  
-===== Réglage des éditeurs ​de textes ===== +  * utf8-migration-tool (Outils ​de migration UTF-8) 
-La plupart des éditeurs de textes sont capables de lire/​écrire ​dans différents encodagesIl faut trouver ​l'option d'​affichage adéquate (usuellement dans Outils > Encodage)+  * 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.
  
-===== Cas des PARTITIONS DE DISQUES ===== 
-Pour une 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 /​etc/​fstab).+==== Réglage des éditeurs ​de textes ====
  
-==== Encodages standards ==== +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//).
-Windows utilise 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).+
  
 +==== Cas des partitions de disques ====
  
-FIXME +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).
-  * Ubuntuutf8 (depuis //​Breezy?//​) +
-  ​Windows 98 (FAT32):  +
-  ​Windows XP (ntfs): cp1252?? +
- +
  
-==== 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.1289946326.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)