Différences

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

Lien vers cette vue comparative

Prochaine révision
Révision précédente
tutoriel:encodage_caracteres [Le 31/10/2009, 12:58]
fnx créée - Ebauche
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}}
  
 ---- ----
  
-====== FAQ sur les encodage ​de caractères =====+====== FAQ sur les encodages ​de caractères =====
  
-Vos fichiers textes/ vos pages web sont/​deviennent illibles notamment dès qu'il y a des accents. +<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.** 
-Suivants ​les programmes utilisés vous n'avez pas les mêmes résultats, ..+</​note>​
- +
-Vous êtes perdu entre encodage latin, utf8, unicode, iso8859-15, ...+
  
-Alors 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 "​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) 
-</​note>​ 
  
 +===== Résumé,​Règles de base =====
 +
 +**Un texte, suite de caractères,​ n'a de sens que si l'on connaît son encodage.**
  
-===== Résumé =====+  - 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]]
  
 +La version en français:​http://​french.joelonsoftware.com/​Articles/​Unicode.html
 ===== Un peu de théorie ===== ===== Un peu de théorie =====
  
 +==== Préliminaire ====
  
-===== Un peu de méthodologie =====+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), etc.
  
-<note important>​Règle de base: **un textesuite de caractères, n'de sens que si l'on connaît son encodage.**</​note>​+Pour des fichiers binairesil existe différents types d'​encodagemais qui n'ont rien à voir avec le sujet de cette page
  
-1) L'​encodage ​par défaut sous Windows (interface graphique) ​est cp1252.+L'​objectif de l'​encodage est d'​**associer un numéro pour chaque caractère d'une langue**.
  
-2) L'​encodage par défaut ​d'​une ​console DOS est cp850 pour les systèmes ​de l'Europe de l'Ouest (Western ​ Europeou cp437 pour les Etats-Unis.+<​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égrapheet 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> ​
  
-3) Aucun éditeur n'est capable - et ne le sera jamais - de déterminer ​l'encodage ​d'un fichier texte.+Il est indispensable,​ pour l'échange ​d'informations de **préciser le codage utilisé**.
  
-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éralementce sont ascii, cp1252, iso-8859-1 et utf-8, iso-8859-15 est moins utilisé) pour les utilisateurs de langues latines et anglo-saxonnes).+Ne pas le faire peut rendre un document difficilement lisible ​(remplacement des lettres accentuées par d'​autres ​suites ​de caractèresetc.). [[wpfr>​Codage_de_caractères|plus ici]]
  
-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.+==== L'ancêtre : ​l'ASCII ====
  
-7) Attention: le web est archi bourré ​d'informations fausses à ce sujet.+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).
  
-8) Attention ​(2): Se méfier comme la peste de l'apparence d'une conversion réussieLes 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.+Les ordinateurs modernes représentent chaque caractère avec au moins 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).
  
-9) Une bonne introductionexplication sur ce que sont les encodages est ici: +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.
-http://www.joelonsoftware.com/articles/​Unicode.html+
  
 +Pour résumer, l'​ASCII est le standard de compatibilité mais ne supporte pas les accents.
  
-===== Identification =====+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]].
  
-  ​* fichier ​htmlvoir entete ​(si bien identifiée ​par le rédacteur) +===== Un peu de méthodologie ===== 
-  * fichier texte priori aucune reconnaissance automatique possible. Néanmoins quelques possibilités de deviner (commande file) + 
-    file -i *.txt+Objectif :​ 
 +  ​connaître l'​encodage du fichier ​source 
 +  * garder la cohérence de l'​encodage 
 + 
 +==== 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). 
 + 
 +Sous Ubuntu, l'​UTF-8 est l'​encodage par défaut de toutes les applications courantes, ou presque. 
 + 
 +FIXME 
 +  * Ubuntuutf8 (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
 + 
 +<​code>​ 
 +      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>​
  
-===== Conversions =====+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//.
  
-<​code>​+==== Conversions ==== 
 + 
 +**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
 do do
-   iconv -f utf8 -t iso8859-15 "​$i"​ > "windows_src/​$i"+   iconv -f utf8 -t iso8859-15 "​$i"​ > "​$i"​.new
 done done
 </​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/ecrire dans différents encodages. Il faut trouver l'option d'​affichage adéquate (usuellement ​dans Outils ​Encodage)+
  
-Pour vos projets rester 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 
-==== Encodages standards ==== +  * encodage des **noms** de fichiers ​(pour le système de fichiers) ; 
-FIXME +  * encodage du **contenu** des fichiers
-  * Ubuntuutf8 (depuis //Breezy?// +</​note>​
-  * Windows 98 (FAT32) +
-  * Windows XP (ntfs): cp1252?? +
-  +
-==== Outils ====+
  
   * utf8-migration-tool (Outils de migration UTF-8)   * utf8-migration-tool (Outils de migration UTF-8)
-  (! Bien différencier les opérations ​ +  ​* konq-toutf8 ​(UTF-8 encoding utility service menu for Konqueror) 
-     encodage des **noms** de fichiers +  [[:​iconv|iconv]] (commande en ligne, dans le package ​**convmv** voir https://​wiki.ubuntu.com/​UTFEightMigrationTool) 
-     ​encodage du **contenu** des fichiers)+  * l'​utilitaire recode : [[http://​pwet.fr/​man/​linux/​commandes/​recode]],​ très puissant.
  
-  * konq-toutf8 (UTF-8 encoding utility servicemenu for Konqueror) 
  
 +==== Réglage des éditeurs de textes ====
  
-=== Liens utiles === +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//).
-Général:​ +
-  *     [[http://www.joelonsoftware.com/articles/Unicode.html]]+
  
-Sources/​Extraits:​ +==== Cas des partitions de disques ====
-  *     ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=100832&​p=1]]+
  
 +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 GNU/Linux, il faut indiquer l'​encodage au montage de la partition (voir [[:​mount_fstab|/​etc/​fstab]]).
 +
 +===== 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]]//​+ 
 +//​Contributeurs ​principaux : [[:​utilisateurs:​fnx]], [[:​utilisateurs:​Rom]],​ [[:​utilisateurs:​aleph]],​ [[:​utilisateurs:​bcag2]].//
  • tutoriel/encodage_caracteres.1256990320.txt.gz
  • Dernière modification: Le 18/04/2011, 14:50
  • (modification externe)