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

Entrée/Sortie Java Discussion :

PB encodage UTF-8 avec Japonais, Chinois


Sujet :

Entrée/Sortie Java

  1. #1
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut [ RESOLU ] PB encodage UTF-8 avec Japonais, Chinois
    J’ai une base de donnée MYSQL, une table de users avec des nom, prenom en français, anglais, arabe, japonais et mandarin.
    La table est au format : utf8_unicode_ci

    Mon problème est que je n’arrive pas à récupérer les contenus arabe, japonais et mandarin comme il faut.

    Par exemple, pour le mandarin, java me retourne : ‘他有ç†æ€§è‰¯å¿ƒ’, dans un fichier .html encodé en utf8.
    Lorsque j’ouvre firefox et que je change l’encodage, la valeur de la base '他有理性良心' apparait comme il faut.

    Si je l’affiche dans la console d’eclipse, ça affiche des « ? »

    J'ai essayé d'utiliser :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Charset charset2 = Charset.forName("UTF-8");
    CharsetDecoder decoder = charset2.newDecoder();
    ByteBuffer byteBuf2 = charset2.encode(resultat.getString("lastname"));
    ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     InputStream in = new ByteArrayInputStream(resultat.getString("lastname").getBytes("UTF-8")); 
     InputStreamReader chaine = new InputStreamReader(in, "UTF8"); 
     BufferedReader br = new BufferedReader ( chaine ) ;
    mais j'ai a chaque fois des '?'.

    Merci par avance de votre aide



    Le code est le 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
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    package remy;
    import java.sql.*;
    import java.lang.Class;
    import java.io.*;
     
    class testsql{
     
    	public static void main(String[] args){
     String pilote = "com.mysql.jdbc.Driver";
     try{
    	 Class.forName(pilote);
    	 Connection connexion = DriverManager.getConnection("jdbc:mysql://localhost/translate","root","");
    	 Statement instruction = connexion.createStatement();
    	 ResultSet resultat = instruction.executeQuery("SELECT * FROM users");
    	 while(resultat.next())
    	 {
    		 System.out.println("---------------------------");
    		 System.out.println("Prénom : "+resultat.getString("firstname"));
    		 System.out.println("Nom : "+resultat.getString("lastname"));
    		 System.out.println("Langue : "+resultat.getString("lang"));
     
    		 try {
    		     FileOutputStream fos = new FileOutputStream("test.html");
    		     Writer out = new OutputStreamWriter(fos, "UTF-8");
    		     out.write(resultat.getString("lastname"));
    		     out.close();
    		 }
    		 catch (IOException e) {
    		     e.printStackTrace();
    		 }
    	 }
     }
    catch (Exception e){
    	System.out.println("echec pilote : "+e);
    	}
    }
    }



    Mysql 5
    Java 1.6

  2. #2
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    up

  3. #3
    Membre confirmé
    Inscrit en
    Mai 2007
    Messages
    335
    Détails du profil
    Informations forums :
    Inscription : Mai 2007
    Messages : 335
    Points : 511
    Points
    511
    Par défaut
    Bonjour,
    ne te fie pas à la console, elle n'est pas forcément bien encodée. Le truc marrant, c'est que quand j'affiche ce topic en UTF-8, les caractère chinois sont bien affichés:
    (edit: je viens de comprendre que c'est ce que tu faisait)

    Conclusion, je pense qu'à l'écriture, tes caractères sont bien encodés, c'est à la visu que le rendu est mauvais:
    - vérifie s'il faut que ton fichier html commence en hexa par une chaine spéciale pour le marquer comme encodé en UTF8: le BOM ( EF BB BF pour de l'utf-8 )

    - Vérifie l'encoding spécifié dans ta balise meta du fichier html de sortie.

    donc s'il faut mettre le BOM voici les codes
    http://unicode.org/faq/utf_bom.html#22
    http://fr.wikipedia.org/wiki/Marque_d'ordre_des_octets

  4. #4
    Candidat au Club
    Profil pro
    Inscrit en
    Novembre 2006
    Messages
    5
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2006
    Messages : 5
    Points : 3
    Points
    3
    Par défaut
    Citation Envoyé par deltree
    Bonjour,
    ne te fie pas à la console, elle n'est pas forcément bien encodée. Le truc marrant, c'est que quand j'affiche ce topic en UTF-8, les caractère chinois sont bien affichés: sous Firefox fait affichage, encodage des caractère, UTF-8

    fait le même test avec le fichier html que tu as généré.

    Conclusion, je pense qu'à l'écriture, tes caractères sont bien encodés, c'est à la visu que le rendu est mauvais:
    - vérifie s'il faut que ton fichier html commence en hexa par un chaine spéciale pour le marquer comme encodé en UTF8 ( EF BB BF ??)
    - Vérifie l'encoding spécifié dans ta balise meta du fichier html de sortie.
    Merci, en effet, c'était bien un problème d'affichage dans eclipse, ça s'affiche bien dans une JFrame.

    Problème résolu

Discussions similaires

  1. Zend Server et encodage UTF-8 avec readdir
    Par yemal48 dans le forum Langage
    Réponses: 14
    Dernier message: 04/11/2010, 22h18
  2. [ZF 1.10] Problème d'encodage UTF-8 avec Zend_Db Mysqli
    Par arnolem dans le forum Zend_Db
    Réponses: 1
    Dernier message: 21/04/2010, 00h12
  3. [MySQL] Encodage UTF-8 avec phpMyAdmin
    Par matpush dans le forum PHP & Base de données
    Réponses: 8
    Dernier message: 30/12/2009, 09h30
  4. [mail] Encodage UTF-8 avec mail()
    Par anxious dans le forum Langage
    Réponses: 9
    Dernier message: 02/12/2009, 22h56
  5. Encodage UTF-8 avec Notepad++
    Par Palca dans le forum Autres Logiciels
    Réponses: 3
    Dernier message: 28/02/2009, 04h30

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