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 :

Windows et Mac ne s'entendent pas sur l'UTF-8 ! En tout cas cela m'en a tout l'air


Sujet :

Langage Java

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Par défaut Windows et Mac ne s'entendent pas sur l'UTF-8 ! En tout cas cela m'en a tout l'air
    Bonjour,
    Je souhaite lire une page web encoder en utf-8 et récolter sur cette dernière les informations souhaitées. Sur windows, c’est sur cet os que j’ai développé, cela fonctionne parfaitement par contre j’ai testé sur mac et là notamment les é sont sucrés, pas sympa du tout !

    J’effectue l’opération de lecture de la page web de la manière suivante :

    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
     
     
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);		       
     
    InputStreamReader iSRpageWeb = new InputStreamReader(conn.getInputStream(), "UTF-8");
     
    javax.swing.JOptionPane.showMessageDialog(null,"getContentEncoding : " + conn.getContentEncoding());
     
    //lecture de la réponse
    reader = new BufferedReader(iSRpageWeb);
     
    String ligne = "";
     
    while ((ligne = reader.readLine()) != null) {
           pageRetourneParMorphalou.append(ligne); 
           javax.swing.JOptionPane.showMessageDialog(null,"ligne : " +  ligne);
    }
    ensuite je cherche l’information souhaitée (mot) dans pageRetourne.
    Et si les mots n’ont pas de caractères spéciaux ils se trouvent bien dans pageRetourne et peux les extraire. Par contre s’il en a avec par exemple prénom (je sais que la page web contient ce mot) il n’existe pas dans pageRetourne, mais je trouve prnom !

    Ce que j’ai fait :
    1)Dans le head du code de la page Web il est écrit :charset=utf-8
    2)Dans Windows Internet Explorer, le codage indiqué est Unicode (UTF-8)
    3)Par contre, conn.getContentEncoding() est égale à null
    4)En affichant la ligne, j’ai été surpris que pour prénom on trouve prnom et que le é ne soit pas remplacé par un caractère bizarre comme attendu s’il y a un mauvais codage !

    Je dois l’avouer suis dans le noir car j’ai pas idée de quoi cela peut venir alors s’il pouvait y avoir des lumières, merci !

  2. #2
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Salut,


    Les lignes sont bien affiché dans les JOptionPane ????
    C'est quoi pageRetourneParMorphalou ????


    a++

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Par défaut
    pageRetourneParMorphalou c'est un StringBuffer.

    Les lignes sont bien affiché dans les JOptionPane ????
    Non, je les ai mis pour voir ce qu'il y a dans pageRetourneParMorphalou.

  4. #4
    Expert éminent
    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
    Billets dans le blog
    1
    Par défaut
    Donc tu as bien un problème à la lecture, ce qui signifie que le flux ne doti pas être en UTF-8...

    Pour vérifier le charset indiqué par le serveur web, il faut utiliser getContentType() et non pas getContentEncoding(). Ce dernier indique une éventuelle méthode de compression (gzip par exemple) et non pas l'encodage des caractères.


    Sinon si tu pouvais indiquer l'URL ce serait plus pratique...


    a++

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Par défaut
    le getContentType() donne text/html; charset=utf-8 .....

    Merci de m'aider

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Mai 2004
    Messages
    15
    Détails du profil
    Informations personnelles :
    Localisation : Suisse

    Informations forums :
    Inscription : Mai 2004
    Messages : 15
    Par défaut
    Je ne sais plus si je me mords la queue mais j'ai essayé de réecrire la page Web reçu dans un fichier codé en UTF-8. Afin de voir si le codage est bien de l'UTF-8.

    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
     
    OutputStreamWriter out;
    InputStreamReader iSRpageWeb;
     
    URL url = new URL(adresse);
    URLConnection conn = url.openConnection();
    conn.setDoOutput(true);
     
    iSRpageWeb = new InputStreamReader(conn.getInputStream(), "UTF-8");
     
    FileOutputStream fos = new FileOutputStream("PageWeb.txt");
    out = new OutputStreamWriter(fos, "UTF8");
     
    int c;
    while ((c = iSRpageWeb.read()) != -1) out.write(c);
     
    iSRpageWeb.close();
    out.close();
    Je regarde sur notepad++, c'est bien un encodage UTF-8 et il y a les accents !!!!

    Il est à noter que j'ai fait cela sur PC et pas sur MAC (même remarque que pour le getContentType() donne text/html; charset=utf-8 ).
    Mais cela ne devrait pas changer, ou bien ?

Discussions similaires

  1. window.close(); fonctionne en local mais pas sur le serveur
    Par mickey2705 dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 27/06/2014, 08h32
  2. [XL-MAC 2011] Accents sur mac ne se lisent pas sur windows
    Par xavion dans le forum Excel
    Réponses: 2
    Dernier message: 01/03/2013, 10h30
  3. Le son ne s'entend pas sur un autre ordinateur
    Par Claude_Azoulai dans le forum Powerpoint
    Réponses: 11
    Dernier message: 16/03/2009, 18h40
  4. [Mac] Lien ne fonctionnant pas mais ok sous Windows
    Par bractar dans le forum Balisage (X)HTML et validation W3C
    Réponses: 11
    Dernier message: 26/01/2006, 18h38
  5. Code qui ne fonctionne pas sur Mac
    Par malbaladejo dans le forum Général JavaScript
    Réponses: 4
    Dernier message: 14/01/2005, 11h08

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