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, 14:22]
fnx
tutoriel:encodage_caracteres [Le 11/09/2022, 12:18] (Version actuelle)
moths-art Suppression des espaces en fin de ligne (détecté et corrigé via le bot wiki-corrector (https://forum.ubuntu-fr.org/viewtopic.php?id=2067892)
Ligne 1: Ligne 1:
-{{tag>​encodage ​utf8 iso8859 francisation ​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 » :​ 
-Alors cette page a pour l'ambition de vous permettre de vous en sortir, ​et au moins de comprendre ce que vous faites +  * 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 accents, et sans apostrophes ​//(même remarquessur une plage de caractères ces encodages sont normalement équivalents)//.
-<note warning>​Cette page est en constructionelle tente de rassembler des explications simples ​et les principaux outils pour s'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>​ </​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 =====
  
-===== Résumé =====+**Un texte, suite de caractères,​ n'a de sens que si l'on connaît son encodage.**
  
-__Règle ​de base: __ +  - L'​encodage par défaut sous Windows (interface graphique) est [[wpfr>​Windows-1252|cp1252]]. 
-**un texte, ​suite de caractèresn'de sens que si l'on connaît son encodage.**+  - 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éralementce 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 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 autreSi 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]]
  
-1) L'​encodage par défaut sous Windows (interface graphique) est cp1252.+La version en français:​http://​french.joelonsoftware.com/​Articles/​Unicode.html 
 +===== Un peu de théorie =====
  
-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.+==== Préliminaire ====
  
-3) Aucun éditeur n'​est ​capable - et ne le sera jamais - de déterminer l'encodage d'un fichier ​texte.+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.
  
-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).+Pour des fichiers binaires, il existe différents types d'encodage, mais qui n'ont rien à voir avec le sujet de cette page.
  
-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.+L'​objectif de l'​encodage est d'​**associer un numéro pour chaque caractère d'une langue**.
  
-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.+<​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 électriquesPar 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>​
  
-7) Attention: le web est archi bourré ​d'​informations ​fausses à ce sujet.+Il est indispensable,​ pour l'​échange ​d'​informations ​de **préciser le codage utilisé**.
  
-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.+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]]
  
-9) Une bonne introduction/​ explication sur ce que sont les encodages est ici: 
-http://​www.joelonsoftware.com/​articles/​Unicode.html 
  
 +==== L'​ancêtre :​ l'​ASCII ====
  
 +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).
  
-===== Un peu de théorie ===== +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).
-Preliminaire:​ +
-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 des fichiers ​(fat)+
  
-Pour des fichiers binaires, il y a différents type d'encodagemais qui n'ont rien à voir avec le sujet de cette page+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.
  
-**L'​objectif ​de l'​encodage est d'​associer un numéro pour chaque caractère d'une langue.**+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]].
  
-<​note>​ +===== Un peu de méthodologie =====
-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.+
  
-**Il est indispensable,​ pour l'échange d'​information de préciser le codage utilisé.**+Objectif :​ 
 +  ​connaître l'​encodage du fichier source 
 +  ​garder la cohérence de l'encodage
  
-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]] +==== Encodages standards ====
-</​note> ​+
  
-L'​ancetre: ​l'[[http://​fr.wikipedia.org/​wiki/​American_Standard_Code_for_Information_Interchange|ASCII]]+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).
  
-La norme de base est l’ASCII. Cette norme n'utilise que 7 bits et permet ​de coder 128 caractères.+Sous Ubuntu, l'​UTF-8 ​est l'encodage par défaut ​de toutes les applications courantes, ou presque.
  
-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. 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]]. +FIXME 
- +  * Ubuntu: utf8 (depuis ​//Breezy?//
-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. +  * Windows 98 (FAT32)cp1252 
- +  * Windows XP (ntfs)cp1252?? 
- +  ​* ​Windows ​7 : iso-8859-1 
-ASCIIstandard de compatibilité,​ sans accent+  * et pour Windows 10? 
- + 
-ANSI (Windows+
- +
-Unicode +
- +
-UTF-+
- +
-UTF-16 +
- +
-===== Un peu de méthodologie ===== +
-Objectif:  ​ +
-  * connaitre l'​encodage du fichier source +
-  * garder la cohérence de l'​encodage+
  
 +==== 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 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 118: 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 +=== Outils de migration ===
-une [[http://​docs.python.org/​lib/​standard-encodings.html|table]]+
  
 +<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.
  
-Pour vos projets restez homogènes (cf. xx) 
  
-===== Cas des PARTITIONS DE DISQUES ​====+==== Réglage ​des éditeurs de textes ​====
-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).+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//).
  
-==== Encodages standards ​==== +==== Cas des partitions de disques ​====
-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).+
  
 +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).
  
-FIXME +Sous GNU/Linux, il faut indiquer l'​encodage au montage de la partition (voir [[:mount_fstab|/etc/fstab]]).
-  * Ubuntuutf8 (depuis ​//Breezy?// +
-  * Windows 98 (FAT32):  +
-  * Windows XP (ntfs): cp1252?? +
-  +
-==== Outils ====+
  
-  * utf8-migration-tool (Outils de migration UTF-8) +===== Liens utiles =====
-  (! 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)+==== Général ====
  
-  * iconv (commande ​en lignedans le package ​**convmv** voir https://​wiki.ubuntu.com/​UTFEightMigrationTool)+  * [[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 absolumentpositivement 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]]
  
-=== Liens utiles ​=== +==== Description d'​encodages particuliers ====
-Général:​ +
-  *     ​[[http://​www.joelonsoftware.com/​articles/​Unicode.html]] +
-  *     ​[[https://​wiki.ubuntu.com/​UTFEightMigrationTool|UTFEightMigrationTool]]+
  
-  *     ​[[http://​en.wikipedia.org/​wiki/​Character_encoding]] +  * [[wpfr>​CP1252]] **(fr)** 
-  *     ​[[http://​fr.wikipedia.org/​wiki/​Codage_de_caractères]]+  * [[wpfr>​American_Standard_Code_for_Information_Interchange|ASCII]] **(fr)**
  
-Description ​d'encodage particuliers:​ +==== Sources ​d'information les aspects Linux ====
-  *     ​[[http://​fr.wikipedia.org/​wiki/​CP1252]] +
-  *     ​[[http://​fr.wikipedia.org/​wiki/​American_Standard_Code_for_Information_Interchange|ASCII]] +
-  *+
  
-Sources/​Extraits:​ +  ​* [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=100832]] ​**(fr)** 
-  ​    ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=100832]] +  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=231060]] ​**(fr)** 
-  *     ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=231060]] +  * [[https://​forum.ubuntu-fr.org/​viewtopic.php?​id=266393]] ​**(fr)**
-  *     ​[[http://​forum.ubuntu-fr.org/​viewtopic.php?​id=266393]]+
  
 ---- ----
-//​Contributeurs :​[[:​utilisateurs:​fnx]],//​ 
  
-Merci à @Rom, aleph+//​Contributeurs principaux :​ [[:​utilisateurs:​fnx]],​ [[:​utilisateurs:​Rom]][[:​utilisateurs:​aleph]], [[:​utilisateurs:​bcag2]].//​
  • tutoriel/encodage_caracteres.1256995344.txt.gz
  • Dernière modification: Le 18/04/2011, 14:51
  • (modification externe)