Menu

Notepad++ UTF-8 Problème écriture

Xeis
2015-03-20
2015-03-23
  • Xeis

    Xeis - 2015-03-20

    Bonjour,
    Je viens de réinstaller notepad++ et j'ai toujours le même problème.
    Lorsque je passe mon fichier en UTF-8 et que j'écrit un "é" par exemple il m'affiche xE9. Pourtant les "é" déjà présent s'écrivent normalement.
    Je me trouve donc à un problème d'écriture.
    Est-ce que quelqu'un aurait une idée ?
    Merci d'avance.

     
  • THEVENOT Guy

    THEVENOT Guy - 2015-03-23

    Bonjour Xeis,

    C'est bizarre, car, en ce qui me concerne, c'est exactement le contraire qui se produit !

    Essayes les étapes suivantes :

    • Démarre Notepad++

    • Ouvre un nouveau document ( CTRL + N )

    => Document vierge avec l'encodage : UTF-8 w/o BOM, par défaut, pour moi !

    • Choisis l'option Encodage - Convertir en ANSI => encodage ANSI dans la barre d'état, en bas d'écran

    • Écris la phrase C'était un bel été.

    • A présent, choisis l'option Encodage - Encoder en UTF-8

    => Les 3 caractères é sont immédiatement remplacés par l'indication xE9, en vidéo inversée

    • Écris, à nouveau, la phrase C'était un bel été.

    => Cette fois, les caractères tapés sont correctement affichés :-)

    Pourquoi ?

    Et bien, quand, au début, tu as écrit la phrase dans le nouveau fichier, avec encodage ANSI, le caractère é est codé sur 1 octet ( \xe9 ) car le codage ANSI correspond, en fait, à l'encodage Windows-1252, dont tu peux retrouver la liste complète en choisissant l'option Édition - Tableau des caractères ASCII de N++ ou encore à l'adresse :

    https://msdn.microsoft.com/en-us/goglobal/cc305145

    Quand tu as demandé d'encoder ce fichier dans un autre encodage ( UTF-8 ), Notepad++ ne modifie ABSOLUMENT PAS ton fichier. Il cherche à interpréter les codes hexa, ACTUELLEMENT inscrits dans le fichier, en fonction du NOUVEL encodage. Or il se trouve, que le code \xE9, unique, NE peut PAS exister dans un fichier UTF-8 ! Ce qui explique pourquoi tu vois le mot xe9, en vidéo inversée, indiquant que c'est un caractère UTF-8 NON valide

    Pour mémoire, dans un fichier encodé en UTF-8, codant ABSOLUMENT TOUS les caractères de TOUTES les langues :

    • Tout caractère avec UNICODE code-point entre \x0 et \x7f est codé sur 1 octet
    • Tout caractère avec UNICODE code-point entre \x80 et \x7ff est codé sur 2 octets
    • Tout caractère avec UNICODE code-point entre \x800 et \xffff est codé sur 3 octets
    • Tout caractère avec UNICODE code-point entre \x10000 et \x1fffff est codé sur 4 octets

    Et le "type" d'un octet, dans un fichier, codé en UTF-8, est, selon sa valeur, :

    • De \x00 à \x7F => Le SEUL octet d’une séquence de 1 octet ( caractère standard )
    • De \x80 à \xBF => Un octet de CONTINUATION d’une séquence ( du 1er au 3ème )
    • De \xC0 à \xC1 => Valeur INTERDITE
    • De \xC2 à \xDF => L'octet de DÉBUT d’une séquence de 2 octets
    • De \xE0 à \xEF => L'octet de DÉBUT d’une séquence de 3 octets
    • De \xF0 à \xF4 => L'octet de DÉBUT d’une séquence de 4 octets
    • De \xF5 à \xFF => Valeur INTERDITE

    Par exemple, en UTF-8, le caractère é est codé avec les 2 octets C3 A9. Bien sûr, quand tu as réécrit ta phrase, après chaque frappe sur la touche é, les 2 codes hexa C3 et A9 sont, cette fois, placés dans le fichier et le caractère accentué est donc correctement affiché.

    Maintenant, imagine qu'à la place de l'option Encodage - Encoder en UTF-8, tu aies choisi l'option Encodage - Convertir en UTF-8. Cette fois, Notepad++ MODIFIE EFFECTIVEMENT ton fichier car il ré-écrit le MÊME texte, en plaçant les codes adéquats, en fonction de l'encodage UTF-8.

    Par exemple, le mot été est codé avec :

    • Les 3 octets E9 74 E9, si le fichier est encodé en ANSI

    • Les 5 octets C3 A9 74 C3 A9, si le fichier est encodé en UTF-8

    J'espère t'avoir éclairé un peu le chemin :-)

    N'hésites pas à me relancer !

    A+

    Amitiés

    guy038

     

    Last edit: THEVENOT Guy 2015-03-24