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

avec Java Discussion :

ê avec carre a côte : UTF-8".newEncoder();


Sujet :

avec Java

  1. #1
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut ê avec carre a côte : UTF-8".newEncoder();
    Bonjour,

    Pour le caractère ê la méthode ci-dessous m'ajoute une petit carre a la fin du mot, dès que ce mot contient le caractère ê
    ex requête

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     private String setEncodage(String stringXml) throws CharacterCodingException {
            CharsetEncoder encoder = Charset.forName("UTF-8").newEncoder();
            String resultFin = new String(encoder.encode(CharBuffer.wrap(stringXml.toCharArray())).array());
     
            return resultFin;
        }
    resultFin => requêteavecunpetitcarrécommederniercaractère

    merci de votre aide
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  2. #2
    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,


    C'est normal ta méthode transforme ta String en byte[] encodé avec le charset par défaut, puis essayes de le lire en UTF-8...

    Bref ca casse et c'est logique !


    Mais le pire c'est que c'est totalement inutile puisque tu fais cela pour obtenir une String ! Or les String sont toujours encodé en UTF-16...


    Pourquoi fais-tu tout cela ???

    a++

  3. #3
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Bonjour adiGuba

    Pourquoi fais-tu tout cela ???
    Mon String est lu depuis un fichier.properties dont je ne connais pas l'encodage.
    une fois que je le récupére dans java (il est encodé en UTF-16 en tant que String), je dois l'écrire dans un fichier.xml encodé en UTF-8

    Merci de ton aide
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  4. #4
    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 totoche Voir le message
    Mon String est lu depuis un fichier.properties dont je ne connais pas l'encodage.
    Les fichiers *.properties doivent être encodé en iso-8859-1.

    Citation Envoyé par totoche Voir le message
    une fois que je le récupére dans java (il est encodé en UTF-16 en tant que String), je dois l'écrire dans un fichier.xml encodé en UTF-8
    Pourquoi modifié la String !
    C'est le fichier finale qui devra être encodé en UTF-8, donc c'est le flux d'écriture qui doit être encodé, et non pas la String.

    va voir du coté d'OutputStreamWriter...

    a++

  5. #5
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Bonjour et merci, cependant des problemes persistent

    C'est le fichier finale qui devra être encodé en UTF-8, donc c'est le flux d'écriture qui doit être encodé, et non pas la String.
    J'ai omis de préciser que le fichier que je crée (monfic2.xml)récupère aussi des données d'un fichier monfic1.xml, et que j'avais tester de formater le flux

    exemple de monfic1.xml ecrit avec notepad et enregistré-sous UTF-8:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    <?xml version="1.0" encoding="UTF-8" ?>
    <aideEnLigne>
            <paragraphe titre="Composition de l'écran" num="0"><![CDATA[<font face="Arial" size=4 color="#008000"><A name="Ecran"><b>Composition de l'écran</b></A></font>
    <ul>
      <font face="Arial" size=2>
      <li>Un cadre permanent à gauche proposant les options suivantes&nbsp;:</LI>
        <p>
        <ul>
           <li><b><a href="#Standard"><taglib:message bundle="legendes" key="menu.rech.avancee" /></b></a> : Accès au formulaire de recherche pour utilisation avancée sur l'ensemble de la base .</LI>
    Les valeurs extraites du properties remplacent convenablement(accentués ok) celles des taglibs en codant le flux
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
     
     try {            File file = new File("c:\\Temp2\\monfic1.xml");
     
                BufferedReader reader = new BufferedReader(new FileReader(file));
     
    //traitement
    ...
    //Réecriture
      OutputStream fout= new FileOutputStream("c:\\Temp2\\monfic2.xml");
                OutputStream bout= new BufferedOutputStream(fout);
                OutputStreamWriter out = new OutputStreamWriter(bout, "UTF-8");
                out.write(newtext);
                out.close();
    Mais avec cette solution ce sont les caractères accentués contenu dans fmonfic1.xml qui ne suivent plus ...

    <?xml version="1.0" encoding="UTF-8" ?>
    <li><b><a href="#Avancée">Recherche avancée</b></a>
    Donc voilà pourquoi je m'étais résigné a ne 'forcer que l'encodage des caractères issus des properties, laissant faire le FileWriter pour le reste pusique les caractères accentués dans ce cas là étaient maintenus
    ...
    Je ne comprends pas pourquoi en ecodant le flux les caractèes accentués de monfic1.xml 'sautent' !
    Merci de ton aide
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

  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
    Citation Envoyé par totoche Voir le message
    Je ne comprends pas pourquoi en ecodant le flux les caractèes accentués de monfic1.xml 'sautent' !
    Car te ne précise pas l'encodage lorsque tu le lis, et donc tu le lis avec l'encodage par défaut du système... c'est à dire surement windows-1252 dans ton cas !

    Il faut préciser le bon charset à la lecture/écriture des fichier :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Charset utf8 = Charset.forName("UTF8");
    BufferedReader reader = new BufferedReader(new InputStreamReader(new FileInputStream(file, utf8)));
    a++

  7. #7
    Membre confirmé Avatar de totoche
    Inscrit en
    Janvier 2004
    Messages
    1 090
    Détails du profil
    Informations forums :
    Inscription : Janvier 2004
    Messages : 1 090
    Points : 558
    Points
    558
    Par défaut
    Merci adiGuba

    Juste une petite précision c'est la classe InputStreamReader(InputStream in, Charset cs) , qui accepte dans son constructeur le type d'encodage

    Merci encore
    La patience est un arbre aux racines amères, mais aux fruits ci-doux.

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

Discussions similaires

  1. Ecran accueil Win: mot de passe avec carrés
    Par Xios01 dans le forum Windows XP
    Réponses: 2
    Dernier message: 31/12/2008, 10h24
  2. [phpBB] Problème avec l'utf-8
    Par vallica dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 11/03/2007, 20h54
  3. Creation d'un fichier XML avec ASP encoder en UTF-8
    Par freeze_land dans le forum ASP
    Réponses: 6
    Dernier message: 14/02/2007, 10h59
  4. [CSS] Problème avec deux div côte-à-côte
    Par Etanne dans le forum Mise en page CSS
    Réponses: 2
    Dernier message: 31/07/2006, 13h58
  5. Réponses: 2
    Dernier message: 30/08/2004, 14h48

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