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

Java Discussion :

Encodage UTF-8 getBytes


Sujet :

Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut Encodage UTF-8 getBytes
    Bonjour,
    je veux encoder une String en un byte[] UTF-8.
    Pour cela je fait:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    String xmlData;
    byte[] xmlDataBytes = xmlData.getBytes("UTF8");

    Mon problème est que la fonction Java "getBytes" devrait retourner 228 pour la lettre "ä", par contre, si j'exécute pas à pas mon code avec Eclipse, je m’aperçois que cette fonction retourne 2 bytes "-61" et "-92". Et je ne comprends pas pourquoi...


    Pourquoi cela??

    je peux faire comment pour retrouver la valeur correcte ("228" pour "ä")??

    Merci pour tout aide!

  2. #2
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Salut,


    En quoi est-ce une erreur ???

    Et si je ne me trompe pas le code "228" seul n'est pas valide en UTF8 (les codes au dessus de 127 sont décomposé en 2/3/4 octets).

    a++

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    Merci pour la réponse.

    D’accord. Cela explique parce qu’il est décomposé en 2 octets.
    Mais alors -61 et -92 correspondent à 228?
    On fait comment pour reconstruire le 228??

  4. #4
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Tu le sort d'où ce 228 ????

    Pour moi ce code ne correspond à rien en UTF8 !

    a++

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    dans le tables UTF-8....
    exemple:
    http://www.tony-franks.co.uk/UTF-8.htm

    alors je fait comment pour voir si ce -61 et -92 correspondent bien à mon caractère "ä"??

  6. #6
    Expert éminent
    Avatar de adiGuba
    Homme Profil pro
    Développeur Java/Web
    Inscrit en
    Avril 2002
    Messages
    13 938
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Java/Web
    Secteur : Transports

    Informations forums :
    Inscription : Avril 2002
    Messages : 13 938
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Bobble Voir le message
    dans le tables UTF-8....
    exemple:
    http://www.tony-franks.co.uk/UTF-8.htm
    Sauf que ce n'est pas une table UTF-8, mais une table d'entité HTML, qui utilise la valeur du code ISO 8859-1 : http://www.w3.org/TR/html4/sgml/entities.html
    To support these named entities, user agents need only recognize the entity names and convert them to characters that lie within the repertoire of [ISO88591].
    Citation Envoyé par Bobble Voir le message
    alors je fait comment pour voir si ce -61 et -92 correspondent bien à mon caractère "ä"??
    Peut-être en regardant une vrai table UTF8, et en n'oubliant pas que les bytes sont contraint dans l'espace [-128 : 127 ], ce qui donnerait en valeur non-signé 195 et 164...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    byte b = ...;
    int unsigned = b & 0xFF;

    Mais bon je te rassure l'encodage généré est correct

    a++

  7. #7
    Membre expérimenté
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Juillet 2006
    Messages
    245
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Alpes Maritimes (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels

    Informations forums :
    Inscription : Juillet 2006
    Messages : 245
    Par défaut
    Citation Envoyé par Bobble Voir le message
    Merci pour la réponse.

    D’accord. Cela explique parce qu’il est décomposé en 2 octets.
    Mais alors -61 et -92 correspondent à 228?
    On fait comment pour reconstruire le 228??
    Juste comme ça -61 en hexa ça doit être un truc du genre FFFFFFFFFFFFFFC3
    et - 92 un peu pret ça FFFFFFFFFFFFFFA4 (pour un int sur 4 bits)

    Et si tu remarques bien tu retrouves le fameux C3 A4 présent dans la table UTF-8

  8. #8
    Membre éclairé
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    226
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : Suisse

    Informations forums :
    Inscription : Novembre 2008
    Messages : 226
    Par défaut
    c'est gentil! merci beaucoup!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [DOM] Encodage UTF-8 dans fichier XML et PHP
    Par norkius dans le forum Bibliothèques et frameworks
    Réponses: 7
    Dernier message: 03/01/2007, 15h44
  2. Problème d'affichage avec encodage utf-8
    Par t-die dans le forum Zend
    Réponses: 3
    Dernier message: 04/12/2006, 14h55
  3. [C# 2.0] Comment réaliser un encodage UTF-8 ?
    Par StormimOn dans le forum C#
    Réponses: 2
    Dernier message: 18/10/2006, 10h35
  4. Pb Encodage UTF-8 pour Ooo
    Par Sylvain James dans le forum XMLRAD
    Réponses: 10
    Dernier message: 08/03/2006, 22h28
  5. [WebForms] Encodage, UTF-8 et accents
    Par alexischmit dans le forum Général Dotnet
    Réponses: 4
    Dernier message: 28/04/2004, 12h21

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