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

Langage Java Discussion :

lire une String utf 16 ( unicode )


Sujet :

Langage Java

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 54
    Points
    54
    Par défaut lire une String utf 16 ( unicode )
    bonjour , je n'arrive pas à lire une String unicode utf 16.
    voici l'exemple de la String :
    0043006F00750063006F0075000A004500E900E020AC000A0024000AD83DDE04
    Merci de votre aide.

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Hello,

    Il faut utiliser le constructeur de String qui prend des octets et un charset en paramètre.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // En supposant que tu as un tableau bytes[] bytes comme ça :
    byte[] bytes = {
      (byte) 0x00, (byte) 0x43, (byte) 0x00, (byte) 0x6F, (byte) 0x00, (byte) 0x75, (byte) 0x00, (byte) 0x63,
      (byte) 0x00, (byte) 0x6F, (byte) 0x00, (byte) 0x75, (byte) 0x00, (byte) 0x0A, (byte) 0x00, (byte) 0x45,
      (byte) 0x00, (byte) 0xE9, (byte) 0x00, (byte) 0xE0, (byte) 0x20, (byte) 0xAC, (byte) 0x00, (byte) 0x0A,
      (byte) 0x00, (byte) 0x24, (byte) 0x00, (byte) 0x0A, (byte) 0xD8, (byte) 0x3D, (byte) 0xDE, (byte) 0x04
      };
     
    // tu te sers des octets comme ça :
    String string = new String(bytes, StandardCharsets.UTF_16BE);
     
    System.out.println(string);
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 54
    Points
    54
    Par défaut
    t'as interprété les les String de 4 caractères dans ton tableau de byte ?

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Ta question n'a pas beaucoup de sens. En tout cas je n'ai rien interprété de 4 caractères.

    Tu nous as montré une séquence hexadécimale sans nous dire sous quelle forme tu l'obtenais. Une séquence hexadécimale étant essentiellement une séquence d'octets, où chaque octet est représenté par 2 caractères, je l'ai prise par 2 caractères que j'ai mis dans un tableau byte[].
    Tu peux vérifier, ce sont les mêmes.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Mai 2006
    Messages
    51
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2006
    Messages : 51
    Points : 54
    Points
    54
    Par défaut
    ok, j'ai compris cela juste après . merci beaucoup .
    je viens de trouver un autre code qui permet de ne pas faire la table mais de la calculer directement via Hex.decodeHex(text.toCharArray())

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    String text="0043006F00750063006F0075000A004500E900E020AC000A0024000AD83DDE04";
    byte[] bytes = Hex.decodeHex(text.toCharArray()); 
    String string = new String(bytes, "UTF-16");
    System.out.println( string);
    j'ai le même résultat que ce que tu m'as donné.

    Merci encore pour ton aide.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 551
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 551
    Points : 21 607
    Points
    21 607
    Par défaut
    Parfait.

    Pour information une prochaine fois, si tu nous avais dit dès le début que tu avais une variable String text="0043006F00750063006F0075000A004500E900E020AC000A0024000AD83DDE04", nous aurions pu te dire comment s'en servir.
    Là tu nous as juste montré de l'hexadécimal qui sort de nulle part, j'ai dû improviser.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

Discussions similaires

  1. lire une String utf 16 ( unicode
    Par fleure dans le forum Général Python
    Réponses: 1
    Dernier message: 04/03/2015, 16h09
  2. RegEx pour lire une string avec des lignes
    Par Bacube dans le forum VB.NET
    Réponses: 3
    Dernier message: 16/05/2012, 16h20
  3. Lire une string ligne par ligne
    Par Aurazed dans le forum Entrée/Sortie
    Réponses: 3
    Dernier message: 08/02/2008, 11h24
  4. [débutant]lire une string
    Par jocelyn54 dans le forum Débuter
    Réponses: 10
    Dernier message: 28/11/2007, 18h00
  5. [MFC] Lire une string (niveau débutant)
    Par Korskarn dans le forum MFC
    Réponses: 10
    Dernier message: 24/08/2005, 18h38

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