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 :

Problème de caracteres


Sujet :

Langage Java

  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 149
    Par défaut Problème de caracteres
    Bonjour,

    je dois encoder un caractere, par exemple '€'. Celui ci a comme code Ascii 128 (1 000 0000 en binaire),
    Seulement, si je fais

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    int Code = 0;
    String MonBinaire = "10000000";
    for (int i=0; i< cpt;i++)
    {            
           Code = Integer.parseInt(MonBinaire,2);     
           res = res + (char)Code;
    }
    Code est bien égal à 128, mais seulement le transtypage ne marche pas, car je n'arrive pas à recupérer mon signe '€' ....

    quelqun sait comment faire ?

    merci pour votre aide !

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

    Informations forums :
    Inscription : Août 2004
    Messages : 8 765
    Par défaut
    Euh, la table ASCII ne contient que 128 caractères et le caractère € n'en fait pas partie.

    Diriges toi plutôt vers unicode pour ce genre de chose

    Valeur unicode du caractère €: 20AC

    utilisation dans une chaine:
    utilisation dans un char:

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 149
    Par défaut
    merci pour ta réponse,

    meme l'ASCII étendu ne le contient pas ?? je pensais...

    et sinon, je peux recupérer le code Unicode directement à partir de mon caractère ou non ?

    pour etre plus precise, mon problème est que je dois pouvoir encoder des caractères spéciaux, comme NUL ou autres... dans mon pg, ils sont traités avec leur code ASCII, j'aimerais donc pouvoir ensuite les récupérer sous leur forme originale....

    Suis-je claire ?

    encore merci !

  4. #4
    Membre confirmé Avatar de fomazou
    Inscrit en
    Mars 2004
    Messages
    220
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 220
    Par défaut convertion de caractère
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    int Code = 0;
    String MonBinaire = "10000000";
    for (int i=0; i< cpt;i++)
    {            
           Code = Integer.parseInt(MonBinaire,2);     
           res = res + (char)Code;
    }
    il faut initialiser res avant la boucle. et je ne pense pas que tu aies besoin d'une boucle pour faire la convertion. là c'est comme si tu veux convertir chaque bits en un caractère. alors que le tout doit faire le caractère '€'
    suffit

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 149
    Par défaut
    oui oui, pardon, il s'agit d'un extrait de mon code en fait... (j'ai mal fait le ménage : Res est initialisé et la boucle sert à autre chose)

    Pas d'autres idées pour mon problème sinon ?

  6. #6
    Membre actif

    Profil pro
    Enseignant
    Inscrit en
    Novembre 2007
    Messages
    32
    Détails du profil
    Informations personnelles :
    Âge : 39
    Localisation : Algérie

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2007
    Messages : 32
    Par défaut
    Salut,

    Si j'ai bien compris le probleme:

    Je pense que le problème n'est pas dans le code!

    Cela dépend de la source de votre texte, en d'autres termes: le type de votre entrée:

    Si vous lisez vos données à partir d'un fichier ou d'un JTextField, vous pouvez extraire des sous chaines qui contiennent (chacune) un seul caractère et vous faites la comparaison avec le code unicode de votre caractère, quand vous le trouvez (par equals) vous le remplacez.

    Si votre entrée est faite à partir de dos, il est impossible de le recuperer (même aussi si le format de votre fichier ne prend pas en charge l'unicode).

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    149
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2005
    Messages : 149
    Par défaut
    merci pour ton aide

    l'entree se fait à partir d'un fichier,

    votre solution ne me parait pas bonne, car il est possible que je rencontre des caractères comme NUL, RLE ou autres... dans ce cas, je ne vois pas comment je pourrais remplacer les caractères non ?

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Janvier 2004
    Messages
    41
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2004
    Messages : 41
    Par défaut
    Bonjour,

    je dois encoder un caractere, par exemple '€'. Celui ci a comme code Ascii 128 (1 000 0000 en binaire)
    Attention ! :

    la valeur de '€' ou comme l'a dit sinok '\u20ac' est 8364 soit 00000010000010101100 en binaire simplement obtenus avec un cast en long

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    System.out.println((long)'\u20ac');
    , puisque cette valeur est supérieure à 1 octet, pour la lire à partir d'un fichier il faut lire plusieurs caractères "ASCII" a la fois codés sur 1 octet, puis interpreter la valeur, par exemple en faisant un cast en char : Ou plus simplement en utilisant les méthodes Java qui permettent de lire des caractères et qui peuvent renvoyer directement la valeur char.

    en esperant vous avoir eclairé.

Discussions similaires

  1. problème reception caracteres
    Par marcuss dans le forum C++
    Réponses: 3
    Dernier message: 18/06/2011, 13h22
  2. Problème des caracteres accentués
    Par kodo dans le forum MySQL
    Réponses: 3
    Dernier message: 04/11/2010, 10h01
  3. Problème encodage caractere unicode
    Par NaBuCO dans le forum Entrée/Sortie
    Réponses: 2
    Dernier message: 05/04/2009, 15h45
  4. Réponses: 0
    Dernier message: 11/12/2007, 19h26
  5. Réponses: 4
    Dernier message: 13/04/2005, 18h12

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