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 :

problème de conversion UTF -> iso


Sujet :

Java

  1. #1
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut problème de conversion UTF -> iso
    Salut,

    j'ai un petit problème de convesion de caractères de l'utf vers iso. Jusque là, j'utilisais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    	public String convertToIso(String toConvert){
    		String converted ="";
    		try{
    			converted = new String ( toConvert.getBytes(), "ISO-8859-1" );
    		}catch(Exception err){
    			System.out.println(err+"Problème de conversion UTF -> ISO ");
    		}
    		return converted;
    	}
    Mais suite à une utilisation plus approfondie, j'ai vu que lorsque l'on à affaire à des mots comme "oeuvre", il y a des problème avec le oe qui est trduit par un merveilleux carré. Le même problème se pose avec le " ' "... en cherchant sur google, j'ai vu qu'une solution consistait à passer de l'utf à l'ascii et ensuite à l'iso. Quelqu'un voit une solution plus facile?

  2. #2
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 162
    Points : 446
    Points
    446
    Par défaut
    Tient ca me rapelle un peut mon problème ...
    http://www.developpez.net/forums/sho...d.php?t=278221
    Si ce bout de code peut t'aider ... (compilé sur windows ca marche nikel )

  3. #3
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Ca à l'air de répondre à mes attentes, merci...

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 162
    Points : 446
    Points
    446
    Par défaut
    Si ca resoud ton pb .. oublie pas le tag "résolu"

  5. #5
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Je suis au courant pour le tag mais je préfère toujours le mettre après avoir testé à fond, pour ne pas ré-ouvrir un post...

  6. #6
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Salut,


    Il y a deux raisons pour lesquelles cela ne peut pas marcher :

    1. Ta méthode de conversion est incorrecte ! En effet getBytes() converties les caractères selon le charset par défaut du système, que tu interprètes ensuite en tant que ISO-8859-1...

      Il faut également utiliser le charset avec la méthode getBytes(String) pour que la conversion soit correcte : on transforme une String en bytes selon le bon charset, que l'on convertie ensuite en String :
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      converted = new String(toConvert.getBytes("ISO-8859-1"), "ISO-8859-1");

    2. Le second problème, c'est que l'encodage ISO-8859-1 ne possède pas le caractère 'œ'...

      Il faudrait plutot utiliser ISO-8859-15



    a++

    PS : pour le tag résolu, si tu le mets trop vite, tu peux toujours l'enlever par la suite

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Juin 2006
    Messages
    162
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2006
    Messages : 162
    Points : 446
    Points
    446
    Par défaut
    Ma méthode donner plus haut ne convertie pas l'utf vers l'iso mais fait seulement un remplacement de caractère. A l'origine elle a été faite pour virer l'encodage utf spécial de Windows (Word spécialement ) de ces caractère. Après ca ne te dispense pas d'utiliser ta méthode pour reconvertir en ISO.
    Et pour la remarque de ISO-8859-15, le 15 comporte aussi le signe €

  8. #8
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Ca fonctionne pas le
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     converted = new String(toConvert.getBytes("ISO-8859-1"), "ISO-8859-1");
    J'essaie d'insérer dans une db la chaine produite et j'obtiens l'erreur :
    ERROR: character 0xc593 of encoding "UTF8" has no equivalent in "LATIN1"
    pour le caractère : "’"...

  9. #9
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par Empty_body
    J'essaie d'insérer dans une db la chaine produite et j'obtiens l'erreur :
    ERROR: character 0xc593 of encoding "UTF8" has no equivalent in "LATIN1"
    pour le caractère : "’"...
    Ben si le caractère n'existe pas dans LATIN1, je comprend que cela puisse poser un problème à ta base de données...

    a++

  10. #10
    Membre éclairé
    Avatar de sironimo
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    669
    Détails du profil
    Informations personnelles :
    Âge : 40
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations forums :
    Inscription : Mai 2004
    Messages : 669
    Points : 756
    Points
    756
    Par défaut
    Il faudrait donc changer l'encodage de ta base de données ou de certaines tables.

  11. #11
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Je devrais peut être être plus concrèt dans ce que j'essaie vaguement d'expliquer...

    je lis la ligne suivante dans un fichier .txt :
    Monitorage fœtal durant la grossesse
    Je l'affiche sans rien modifier mais en faisant un indexOf("œ") sur la ligne et j'obtiens ceci :
    Monitorage fœtal durant la grossesse ----12
    Losque j'utilise la fonction replaceAll("œ","oe"), rien n'est modifié dans ma ligne... Et lorsque je lance la conversion vers l'ISO, j'obtiens :
    Monitorage f?tal durant la grossesse ----1
    Où se situe le problème?

  12. #12
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    On pourrait voir le bout de code correspondant ?

    a++

  13. #13
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Voilà ce que ça donne dans le code, ligne est une ligne dans mon fichier.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    ligne = convertToIso(ligne.replaceAll("œ","oe");
     
    	public String convertToIso(String toConvert){
    		String converted ="";
    		try{
    			converted = new String ( toConvert.getBytes(), "ISO-8859-15" );
    		}catch(Exception err){
    			System.out.println(err+"Problème de conversion UTF -> ISO ");
    		}
    		return converted;
    	}

  14. #14
    Expert éminent sénior
    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
    Points : 23 190
    Points
    23 190
    Billets dans le blog
    1
    Par défaut
    Je n'ai pas du tout ce comportement !

    Le code suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    public class Main {
     
    	public static String convertToIso(String toConvert) {
    		String converted = "";
    		try {
    			converted = new String(toConvert.getBytes("ISO-8859-1"), "ISO-8859-1");
    		} catch (Exception err) {
    			System.out.println(err + "Problème de conversion");
    		}
    		return converted;
    	}
     
    	public static void main(String[] args) throws Exception {
     
    		String line = "Monitorage fœtal durant la grossesse";
     
    		System.out.println(line);
    		System.out.println(convertToIso(line.replaceAll("œ", "oe")));
    	}
    }
    Me donne comme résultat :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Monitorage fœtal durant la grossesse
    Monitorage foetal durant la grossesse

    De plus ISO-8859-15 reconnait le caractères 'œ' donc jen e comprend pas comment tu peux te retrouver avec un ?

    Tu exécutes comment ? Dans un EDI ou dans la console ?

    a++

  15. #15
    Membre actif Avatar de Empty_body
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    681
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Mai 2004
    Messages : 681
    Points : 239
    Points
    239
    Par défaut
    Je viens de trouver le problème... En fait, je fais du debug... J'ai mal suivi le cheminement de la personne qui avait écrit le bidule... Pour une raison qui m'échappe, il lit 2 fois le fichier la variable est donc ré-écrite plus loin...

    Un tout grand merci pour votre aide...

  16. #16
    Membre actif
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    219
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Paris (Île de France)

    Informations forums :
    Inscription : Avril 2007
    Messages : 219
    Points : 200
    Points
    200
    Par défaut
    Bonjour

    J'arrive un peu tard mais je serais interessé par la méthode mimosa que je vois ce que ca donne chez moi (Le lien n'est plus valide )

    Merci d'avance.

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

Discussions similaires

  1. Problème d'encodage utf-8/iso-8859-15
    Par KR_Prog dans le forum Général Python
    Réponses: 2
    Dernier message: 16/11/2012, 00h07
  2. Problème de conversion UTF 8 avec toUtf8()
    Par defrouille dans le forum Qt
    Réponses: 14
    Dernier message: 03/02/2011, 15h06
  3. Problème de conversion utf-8 en ISO
    Par thelpi dans le forum C#
    Réponses: 7
    Dernier message: 05/08/2008, 16h00
  4. Encodage : Conversion UTF-8 vers ISO-8859-?
    Par polo54 dans le forum Général Java
    Réponses: 6
    Dernier message: 26/06/2007, 19h10
  5. Conversion UTF => ISO
    Par komoku dans le forum Langage
    Réponses: 2
    Dernier message: 31/01/2007, 12h14

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