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 :

Petit problème d'encodage


Sujet :

Java

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut Petit problème d'encodage
    Bonjour à tous,

    Je vous explique en fait dans mon programme je récupère des String du genre :
    "=?iso-8859-1?Q?ma chaine de caract=E8res?= et en fait j'aimerai la transformer pour qu'elle devienne une chaine de caractères dans le bon format c'est-à-dire enlever le iso-8859-1 et que ça m'affiche "ma chaine de caractères" tout simplement, j'ai essayé le constructeur String(chaine, encodage) mais cela ne marche pas, donc je voulais savoir s'il existait une fonction tout prêt fait pour cela où s'il faut que je me tape moi même à faire une classe qui contient tous les caractères spéciaux et que je transforme moi même ?

    Merci de votre réponse et des différents éléments que vous pourrez m'apporter.

  2. #2
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Hello, peut tu préciser un peu plus dans quel circonstances tu as récupérer cette chaîne de caractère car la gestion des encoding peut être très différentes selon le context (HTML, XML, Stream, Fichier, ...)

  3. #3
    Membre confirmé Avatar de daronmaster
    Profil pro
    Inscrit en
    Novembre 2007
    Messages
    67
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Vienne (Poitou Charente)

    Informations forums :
    Inscription : Novembre 2007
    Messages : 67
    Par défaut
    Bonjour,

    regarde la classe URLEncoder (ici : http://java.sun.com/j2se/1.4.2/docs/...a.lang.String)), peut-être cela peut être utile en utilisant l'encodage UTF-8.

    ex: String mastringAEncoder = ....

    String maNouvelleStringEncodee = URLENcoder.encode(maStringAEncoder,"UTF-8");

    Tchû

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut
    Tout d'abord bonjour à tous les deux, merci de répondre ^_^

    En fait je télécharge les informations d'un serveur POP (je télécharge un message quoi) et je l'écris dans un fichier. Par exemple, je vais vouloir extraire la valeur du "Subject" et si la personne a mis des accents, cela s'affichera de la façon dont je vous l'ai dit "Test avec accent =?iso-8859-1?Q?=E9?=". Moi j'aurai aimé une classe qui m'enlève le iso 8859 1 et qui me remplace tous les caractères genre E9 par é, E0 etc.... Histoire d'avoir un truc propre quoi...
    j'ai testé la classe URLEncoder, mais cela remplace mes caractères par des + pour les espaces et des % quelquechose pour les autres caractères spéciaux... Ce n'est donc pas ce que je recherche.

  5. #5
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    dans la librairie commons codec, tu va trouver des classes et des méthodes pour coder / décoder au format quetedprintable, qui est le format que tu as là:

    http://commons.apache.org/codec/apid...ableCodec.html

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut
    Je viens de tester en ajoutant le jar de common codec et j'ai testé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    QuotedPrintableCodec blablab = new QuotedPrintableCodec();
    		String maString = "Test avec accent =?iso-8859-1?Q?=E9?=";
    		String maString2;
    		try {
    			maString2 = blablab.encode(maString);
    			System.out.println("Ma string 2 : "+maString2);
    		} catch (EncoderException e) {
    			// TODO Auto-generated catch block
    			e.printStackTrace();
    		}
    et le résultat est :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Ma string 2 : Test avec accent =3D?iso-8859-1?Q?=3DE9?=3D
    Donc ce n'est toujours pas ce que je recherche alors je ne sais pas si c'est moi est du mal et que je comprends pas trop la classe, mais là je suis perdu !

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut
    J'ai essayé un peu toutes les méthodes et rien ne marche.. Quand je tente les methodes "decode" cela me met que ce n'est pas une String conforme au Quoted Printable...

    Je suis perdu

    Car avec ce code par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    String maString = "Test avec accent =?iso-8859-1?Q?=E9?=";
    		byte[] maString2 = QuotedPrintableCodec.decodeQuotedPrintable(maString.getBytes());
    		System.out.println("Ma string 2 : "+maString2);
    J'obtiens :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    Exception in thread "main" org.apache.commons.codec.DecoderException: Invalid quoted-printable encoding
    	at org.apache.commons.codec.net.QuotedPrintableCodec.decodeQuotedPrintable(QuotedPrintableCodec.java:185)
    	at toto.TestRegexp.main(TestRegexp.java:57)
    Voilà donc ce que j'obtiens!

  8. #8
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    as-tu essayé decode("Test avec accent =?iso-8859-1?Q?=E9?=") plutot que de passer par un tableau de byte?

  9. #9
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut
    Si je fais comme tu m'as dit ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    System.out.println("Ma string 2 : "+blablab.decode("Test avec accent =?iso-8859-1?Q?=E9?="));
    J'obtiens l'exception suivante :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Exception in thread "main" org.apache.commons.codec.DecoderException: Invalid quoted-printable encoding
    	at org.apache.commons.codec.net.QuotedPrintableCodec.decodeQuotedPrintable(QuotedPrintableCodec.java:185)
    	at org.apache.commons.codec.net.QuotedPrintableCodec.decode(QuotedPrintableCodec.java:230)
    	at org.apache.commons.codec.net.QuotedPrintableCodec.decode(QuotedPrintableCodec.java:279)
    	at org.apache.commons.codec.net.QuotedPrintableCodec.decode(QuotedPrintableCodec.java:300)
    	at toto.TestRegexp.main(TestRegexp.java:59)
    Donc cela ne marche toujours pas... Je ne comprends vraiment pas pourquoi il ne veut pas de ma chaine de caractère...

  10. #10
    Membre chevronné

    Homme Profil pro
    Consultant informatique
    Inscrit en
    Juillet 2002
    Messages
    346
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Consultant informatique

    Informations forums :
    Inscription : Juillet 2002
    Messages : 346
    Par défaut
    Hello,

    Ne peut tu pas demander l'encoding du sujet en UTF-8. Car dans mes souvenir l'encoding d'un sujet de mail en autre chose qu'UTF-8 pose des problème.

  11. #11
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut
    C'est le serveur POP qui me renvoie ça moi je ne peux pas faire autrement, j'extrais cela de mon fichier MIME et puis c'est tout A priori c'est l'encoding par défaut...

  12. #12
    Expert éminent
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 482
    Par défaut
    je comprend pas pourquoi il refuse :/

    Sinon, comme alternative, tu as dans l'api javamail:

    javax.mail.internet.MimeUtility.decodeText(String):String qui pourrait te servir

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Février 2009
    Messages
    43
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2009
    Messages : 43
    Par défaut
    Merci beaucoup, cette classe marche niquel pour ce que je fais, mon test :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    String maString = "Test avec accent =?iso-8859-1?Q?=E9?=";
    Devient :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    Test avec accent é
    C'est parfait, encore une fois je te remercie de ton aide précieuse, et honte à moi de ne pas avoir vu cette méthode

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

Discussions similaires

  1. un petit problème d'algo
    Par supertramp dans le forum Algorithmes et structures de données
    Réponses: 22
    Dernier message: 12/10/2004, 20h13
  2. Petit problème de décimales !
    Par ridan dans le forum Langage SQL
    Réponses: 5
    Dernier message: 11/09/2004, 21h24
  3. Réponses: 17
    Dernier message: 13/07/2004, 20h37
  4. petit problème premier plan, arrière plan
    Par gros bob dans le forum OpenGL
    Réponses: 4
    Dernier message: 19/04/2004, 12h00
  5. [jointure] Petit problème sur le type de jointure...
    Par SteelBox dans le forum Langage SQL
    Réponses: 13
    Dernier message: 13/02/2004, 18h55

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