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 :
ou
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"));
mais j'ai a chaque fois des '?'.
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 ) ;
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
Partager