IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windows Discussion :

UTF-8 est-il standard ?


Sujet :

Windows

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 18
    Points
    18
    Par défaut UTF-8 est-il standard ?
    Bonjour,

    Je reçois un fichier supposé être au format UTF-8 Mais quand je l' ouvre dans un éditeur (Scite, notepad++), il n'affiche pas les caractères accentués même en mode UTF8.
    J'ai regardé le binaire du fichier par rapport à un fichier UTF8 qui marche et j'ai vu que le codage du é par exemple est différent:
    Fichier OK: C3A9 (en hexa)
    Fichier KO: 65CC81 soit e + CC81

    Je voudrais dire à celui qui m'a fourni ce fichier que le codage n'est pas bon mais les caractères sont affichés correctement sous FireFox ou Word donc il va me dire qu'il est bon!

    D'ou ma question: existe-t-il vraiment un standard pour coder les caractères en UTF8 (par exemple é sera toujours le même) ou y-a-t-il plusieurs codages possibles ?
    Si quelqu'un peut m'éclairer, ce serai sympa.

    J-Michel

  2. #2
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Jei,

    Unicode accepte plusieurs manières de coder certains caractères, essentiellement ceux qui ont des signes diacritiques (accents, cédille pour nous, il en est d'autres), ce qui se traduit logiquement par des codes UTF8 différents.

    Si Firefox et Word affichent correctement ton caractère, c'est que les 2 codages sont valides. Tant pis pour Scite, notepad++.

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par droggo Voir le message
    Jei,

    Unicode accepte plusieurs manières de coder certains caractères, essentiellement ceux qui ont des signes diacritiques (accents, cédille pour nous, il en est d'autres), ce qui se traduit logiquement par des codes UTF8 différents.

    Si Firefox et Word affichent correctement ton caractère, c'est que les 2 codages sont valides. Tant pis pour Scite, notepad++.
    Le problème, c'est qu'il n'y a pas que scite et notepad.
    Par exemple, si je veux convertir le fichier UFT-8 avec iconv, l'accent du é est bien rendu avec C3A9 mais pas avec 65CC81
    Je m'étonne quand même qu'il n'y ait pas de standard pour coder un simple é en unicode. Comment savoir quels sont les codes possibles pour é par exemple ?

    J-Michel

  4. #4
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Bonjour,

    Firefox choisit lui même le charset à utiliser.

    Mais tu peux le changer via le menu affichage>Encodage des caractères, si ça se trouve il visualise son fichier en ISOXXXX sans s'en rendre compte.

    Mais sinon il y a un standard pour les codes caractère en UTF-8, et tu trouveras toutes les tables à l'endroit suivant: http://www.unicode.org/charts/

    Pour le codage standard su é la table est la suivante: http://www.unicode.org/charts/PDF/U0080.pdf

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par sinok Voir le message
    Bonjour,

    Firefox choisit lui même le charset à utiliser.

    Mais tu peux le changer via le menu affichage>Encodage des caractères, si ça se trouve il visualise son fichier en ISOXXXX sans s'en rendre compte.
    J'ai pas de problème avec FireFox. Quand je choisi l'encodage UTF-8, j'ai bien mon é avec les deux fichiers.

    Mais sinon il y a un standard pour les codes caractère en UTF-8, et tu trouveras toutes les tables à l'endroit suivant: http://www.unicode.org/charts/

    Pour le codage standard su é la table est la suivante: http://www.unicode.org/charts/PDF/U0080.pdf
    Merci pour les liens. Mais je ne vois qu'une façon de coder le é.
    Pourquoi en UTF-8, je me retrouve avec 2 codages différents pour cette lettre. Je n'y comprend rien.
    Quelqu'un sait par quelle opération ce 00E9 pour é se transforme en C3A9 ou 65CC81 selon le fichier UFT-8.

    Désolé d'insister mais je n'ai toujours pas compris.
    J-Michel

  6. #6
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    00E9 est juste la notation interne à UTF-8.
    Une foie encodé en Hexa ça donne C3 A9

    Bon ensuite les deux sont bien valides après vérification.

    En effet

    UTF-8(65 CC 81) = U+0065 U+0301 = e + accent aigu = é
    UTF-8(C3 A9) = U+00E9 = é

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Février 2006
    Messages
    23
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2006
    Messages : 23
    Points : 18
    Points
    18
    Par défaut
    Citation Envoyé par sinok Voir le message
    00E9 est juste la notation interne à UTF-8.
    Une foie encodé en Hexa ça donne C3 A9

    Bon ensuite les deux sont bien valides après vérification.

    En effet

    UTF-8(65 CC 81) = U+0065 U+0301 = e + accent aigu = é
    UTF-8(C3 A9) = U+00E9 = é
    et merci beaucoup! J'ai enfin compris.
    Il y aurait donc seulement 2 façons de coder un caractère accentué en UTF-8:
    - Soit le code du caractère lui même (é=E9)
    - Soit le caractère sans son accent (e=65) + le code de l'accent
    La deuxième méthode a l'avantage, après élimination des accents, d'avoir un texte quand même lisible (il nous reste e)
    Malheureusement, elle semble moins implémenté dans les programmes qui lisent l'UTF-8.
    Reste pour moi à tester si les classes Java ou dotnet lisent bien les 2 façons de coder les accents.

    Encore merci, je m'endormirai moins bête ce soir.
    Jean-Michel

  8. #8
    Expert confirmé

    Inscrit en
    Août 2006
    Messages
    3 950
    Détails du profil
    Informations forums :
    Inscription : Août 2006
    Messages : 3 950
    Points : 5 667
    Points
    5 667
    Par défaut
    Jai,
    Citation Envoyé par sinok Voir le message
    00E9 est juste la notation interne à UTF-8.
    Non, c'est le code du caractère é en Unicode (officiellement U+00E9)
    Citation Envoyé par sinok Voir le message
    Une foie encodé en Hexa ça donne C3 A9
    et C3A9 est son encodage en UTF8

  9. #9
    Expert éminent sénior
    Avatar de sinok
    Profil pro
    Inscrit en
    Août 2004
    Messages
    8 765
    Détails du profil
    Informations personnelles :
    Âge : 44
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Points : 12 977
    Points
    12 977
    Par défaut
    Je me suis aperçu de mon erreur par la suite, merci d'avoir corrigé.

Discussions similaires

  1. Police de caractère qui n'est pas standard
    Par mikadom dans le forum Mise en page CSS
    Réponses: 6
    Dernier message: 28/01/2009, 16h27
  2. read() est-il standard ?
    Par paillepailles dans le forum C
    Réponses: 16
    Dernier message: 09/01/2008, 17h13
  3. Réponses: 3
    Dernier message: 19/08/2006, 18h09
  4. [SQL] Tester si une chaine est au format date standard
    Par shaun_the_sheep dans le forum Oracle
    Réponses: 5
    Dernier message: 18/07/2006, 14h00
  5. Comment savoir qu'une fonction est standard ?
    Par D[r]eadLock dans le forum C
    Réponses: 5
    Dernier message: 24/03/2003, 14h42

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo