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 31/10/2009, 13:27]
fnx
tutoriel:encodage_caracteres [Le 04/06/2020, 10:40] (Version actuelle)
154.126.80.154 [Encodages standards]
Ligne 1: Ligne 1:
-{{tag>​encodage ​utf8 iso8859 ​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>​ 
 +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.** 
 +</​note>​
  
-Les noms de vos fichiers apparaissent avec des signes cabalistiques,+Vous êtes perdu entre polices, encodages ​des sigles comme latin, utf8, unicode, iso8859-15etc. ?
  
-Suivants les programmes utilisés ​vous n'avez pas les mêmes ​affichages de données, ...+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) ;​ 
 +  * 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.
  
-Vous êtes perdu entre policesencodages ​des sigles ​comme latinutf8unicode, iso8859-15, ...+<note tip> 
 +Vous êtes déjà fatigué à ce point par la lecture de cette pagevoici des « palliatifs » :​ 
 +  * ne codez et ne lisez qu'en anglais //(comme il n'y a pas d'​accentsles mauvais réglages sont souvent invisiblesd'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 accentset sans apostrophes //(même remarques, sur une plage de caractères ces encodages sont normalement équivalents)//​. 
 +</​note>​
  
-Alors cette page a pour l'​ambition de vous permettre de vous en sortir, et au moins de comprendre ce que vous faites 
  
-<note warning>​Cette page est en constructionelle tente de rassembler des explications simples et les principaux outils pour s'en sortir+===== Résumé,Règles ​de base =====
  
-//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// +**Un texte, suite de caractères, ​n'de sens que si l'on connaît son encodage.**
-</​note>​+
  
-<note tip>Vous êtes déjà fatigué à ce point par la lecture ​de cette page, voici des "​solutions"​ rapides +  - L'​encodage par défaut sous Windows (interface graphique) est [[wpfr>Windows-1252|cp1252]]. 
-     * 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)//​ +  - 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. 
-     * é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)// +  - Aucun éditeur n'est capable — et ne le sera jamais — de déterminer l'encodage d'un fichier texte. 
-</note>+  - 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égulieril 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]]
  
 +La version en français:​http://​french.joelonsoftware.com/​Articles/​Unicode.html
 +===== Un peu de théorie =====
  
-===== Résumé =====+==== Préliminaire ​====
  
-__Règle de base: __ +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). 
-**un texte, suite de caractères, ​n'a de sens que si l'on connaît son encodage.**+Cela inclut les codes sources, les fichiers log, les noms de fichiers (système de fichiers), etc.
  
-1) L'​encodage ​par défaut sous Windows (interface graphique) est cp1252.+Pour des fichiers binaires, il existe différents types d'​encodage, mais qui n'ont rien à voir avec le sujet de cette page
  
-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.+L'​objectif de l'​encodage ​est d'**associer un numéro ​pour chaque caractère d'une langue**.
  
-3Aucun éditeur n'est capable - et ne le sera jamais - de déterminer ​l'encodage ​d'un fichier texte.+<​note>​ 
 +En informatique,​ un codage de caractères est un code qui associe un jeu de caractères d'une langue naturelle (comme un alphabetavec 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> ​
  
-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).+Il est indispensable,​ pour l'​échange ​d'informations ​de **préciser le codage ​utilisé**.
  
-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.+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]]
  
-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) Attentionle web est archi bourré d'informations fausses à ce sujet.+==== L'​ancêtre l'ASCII ====
  
-8) Attention (2): Se méfier comme la peste de l'​apparence d'une conversion réussieLes encodages étant similaire pour de nombreux ​caractèresde 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.+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).
  
-9Une bonne introduction/​ explication sur ce que sont les encodages est ici: +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).
-http://www.joelonsoftware.com/articles/Unicode.html+
  
 +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.
  
 +Pour résumer, l'​ASCII est le standard de compatibilité mais ne supporte pas les accents.
  
-===== Un peu de théorie ===== +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]].
-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 sourcesles fichiers logles 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. +===== Un peu de méthodologie =====
  
 +Objectif :​
 +  * connaître l'​encodage du fichier source
 +  * garder la cohérence de l'​encodage
  
-===== Un peu de méthodologie =====+==== Encodages standards ​====
  
 +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).
  
-===== Identification =====+Sous Ubuntu, l'​UTF-8 est l'​encodage par défaut de toutes les applications courantes, ou presque. 
 + 
 +FIXME 
 +  * Ubuntu: utf8 (depuis //​Breezy?//​) 
 +  * Windows 98 (FAT32): cp1252 
 +  * Windows XP (ntfs): cp1252. ?? 
 +  * Windows 7 : iso-8859-1 
 +  * et pour Windows 10? 
 +  
 + 
 +==== 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 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) :
  
-  * 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) 
 <​code>​ <​code>​
-      file -i *.txt+      file -i *
     a.txt: ​    ​text/​x-pascal;​ charset=us-ascii     a.txt: ​    ​text/​x-pascal;​ charset=us-ascii
-    b.kml:     ​text/​xml+    b.xml:     ​text/​xml
     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 faite 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//.
  
-Exemple +==== Conversions ==== 
-<​code>​+ 
 +**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 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 85: Ligne 122:
 </​code>​ </​code>​
  
-===== Réglage des éditeurs de textes ===== +Pour s'y retrouver ​dans les dénominations : une <del>[[http://​docs.python.org/​lib/​standard-encodings.html|table]]</​del>​.
-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)+=== Outils de migration ===
  
-===== Cas des PARTITIONS DE DISQUES ===== +<note important>​ 
-==== Concepts ==== +Dans tous les cas, il faut bien différencier les opérations :​ 
-il faut indiquer l'encodage ​lorsque la partition est montée ​(voir /etc/fstab). +  * encodage ​des **noms** de fichiers ​(pour le système de fichiers) 
-==== Encodages standards ==== +  * encodage du **contenu** des fichiers
-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).+</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.
  
-FIXME 
-  * Ubuntu: utf8 (depuis //Breezy?// 
-  * Windows 98 (FAT32): ​ 
-  * Windows XP (ntfs): cp1252. ?? 
-  
-==== Outils ==== 
  
-  * utf8-migration-tool (Outils de migration UTF-8) +==== Réglage ​des éditeurs ​de textes ====
-  (! 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)+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//).
  
-  * iconv (commande en ligne, dans le package **convmv** voir https://​wiki.ubuntu.com/​UTFEightMigrationTool)+==== Cas des partitions de disques ====
  
-=== Liens utiles === +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).
-Général:​ +
-  *     [[http://​www.joelonsoftware.com/​articles/​Unicode.html]] +
-  ​    [[https://​wiki.ubuntu.com/​UTFEightMigrationTool|UTFEightMigrationTool]]+
  
-Sources/Extraits+Sous GNU/Linux, il faut indiquer l'​encodage au montage de la partition (voir [[:mount_fstab|/​etc/​fstab]]). 
-  *     ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=100832&p=1]] + 
-  *     ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=231060]] +===== Liens utiles ===== 
-  *     ​+ 
 +==== Général ==== 
 + 
 +  * [[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)** 
 +  * [[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)** 
 +  * [[https://​wiki.ubuntu.com/​UTFEightMigrationTool|UTFEightMigrationTool]] **(en)** 
 +  * [[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]] 
 + 
 +==== Description d'​encodages particuliers ==== 
 + 
 +  * [[wpfr>​CP1252]] **(fr)** 
 +  * [[wpfr>​American_Standard_Code_for_Information_Interchange|ASCII]] **(fr)** 
 + 
 +==== Sources d'​information les aspects Linux ==== 
 + 
 +  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=100832]] ​**(fr)** 
 +  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=231060]] ​**(fr)** 
 +  * [[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=266393]] **(fr)**
  
 ---- ----
-//​Contributeurs :​[[:​utilisateurs:​fnx]]// + 
-Merci à @Rom, aleph+//​Contributeurs ​principaux : [[:​utilisateurs:​fnx]], [[:​utilisateurs:​Rom]][[:​utilisateurs:​aleph]], [[:​utilisateurs:​bcag2]].//​
  • tutoriel/encodage_caracteres.1256992070.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)