PB encodage UTF-8 avec Japonais, Chinois, Arabe

PB encodage UTF-8 avec Japonais, Chinois, Arabe - Java - Programmation

Marsh Posté le 15-06-2007 à 18:28:58    

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 :
Charset charset2 = Charset.forName("UTF-8" );
CharsetDecoder decoder = charset2.newDecoder();
ByteBuffer byteBuf2 = charset2.encode(resultat.getString("lastname" ));
ou  
 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 :
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


Message édité par ch33k0n le 22-06-2007 à 16:21:23
Reply

Marsh Posté le 15-06-2007 à 18:28:58   

Reply

Marsh Posté le 15-06-2007 à 18:56:54    

Installe les langues asiatiques dans windows
 
Panneau de configuration > option linguistique > Langages > Installer les langues asiatiques (enfin un truc comme ca, j'ai la version English)


Message édité par guzman le 15-06-2007 à 18:58:50
Reply

Marsh Posté le 15-06-2007 à 20:59:36    

T'as essayé de spécifier l'encoding dans ton code HTML ?
Il me semble que lorsqu'il n'y a pas d'encoding dans ton code HTML le navigateur en choisit un par défaut, et je crois pas que ce soit UTF-8.

Reply

Marsh Posté le 15-06-2007 à 22:39:53    

et utilise ca comme url jdbc:
 

jdbc:mysql://localhost:3306/translate?useUnicode=true&characterEncoding=UTF-8


 
ca peut aider egalement

Reply

Marsh Posté le 18-06-2007 à 10:17:19    

Merci, ça génère maintenant les bons caractères dans le fichier :D
Par contre, dans la console d'eclipse, ça affiche toujours des "?".
J'ai bien "Text file encoding" à UTF-8 dans "Workspace" dans "Preferences".
 
 
Est ce qu'il y a des versions du JDK spécifique pour les langues ?
 
 
Merci d'avance.

Reply

Marsh Posté le 18-06-2007 à 11:58:20    

Avec une JFrame tout s'affiche comme il faut :D
 
Merci  :love:

Reply

Marsh Posté le 22-06-2007 à 16:20:13    

Après quelques avancées sur le sujet, il paraitrait que l'utf-8 ne gère pas bien le Japonais.
 
Il y a 2 alphabets :
- un alphabet composé de "kanji" = ce sont comme les idéogrammes chinois (1 caractère = 1 mot)
- un alphabet "phonétique" composé de "katagana" et "hiragana" qui sont des caractères phonétiques (c'est-à-dire 1 caractère = 1 son, comme par exemple "wa", "sa" ou "bi", etc.)
 
note : l'alphabet phonétique a été inventé pour faciliter l'apprentissage et la lecture du japonais car il est beaucoup plus facile d'apprendre un nombre limité de sons que d'apprendre la totalité des idéogrammes (ce qui veut dire 1 dessin pour 1 mot)
 
Est ce que l'utf-8 permet d'afficher correctement un de ces 3 alphabets ?
 
ps : j'ai testé de mettre l'alphabet hiragana dans une table, ça à l'air normal mais je ne saurai remarquer de subtiles différences...

Message cité 1 fois
Message édité par ch33k0n le 27-06-2007 à 12:28:30
Reply

Marsh Posté le 22-06-2007 à 16:37:47    

ch33k0n a écrit :

Merci, ça génère maintenant les bons caractères dans le fichier :D
Par contre, dans la console d'eclipse, ça affiche toujours des "?".
J'ai bien "Text file encoding" à UTF-8 dans "Workspace" dans "Preferences".


Elle est configuré pour printer de l'UTF8 la console ? (Run... > Onglet Common > Console Encoding)


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 22-06-2007 à 17:12:47    

ch33k0n a écrit :

Après quelques avancées sur le sujet, il paraitrait que l'utf-8 ne gère pas bien le Japonais.
 
Il y a 2 alphabets :
- un alphabet composé de "kanji" = ce sont comme les idéogrammes chinois (1 caractère = 1 mot)
- un alphabet "phonétique" composé de "katagana" et "hiragana" qui sont des caractères phonétiques (c'est-à-dire 1 caractère = 1 son, comme par exemple "wa", "sa" ou "bi", etc.)
 
note : l'alphabet phonétique a été inventé pour faciliter l'apprentissage et la lecture du japonais car il est beaucoup plus facile d'apprendre un nombre limité de sons que d'apprendre la totalité des idéogrammes (ce qui veut dire 1 dessin pour 1 mot)


Non, pas du tout, mais la n'est pas la question [:pingouino]
 

ch33k0n a écrit :


Est ce que l'utf-8 ne permet pas d'afficher correctement un de ces 3 alphabets ?
 
ps : j'ai testé de mettre l'alphabet hiragana dans une table, ça à l'air normal mais je ne saurai remarquer de subtiles différences...


et oui

Reply

Marsh Posté le 27-06-2007 à 12:37:55    

zapan666 a écrit :

Elle est configuré pour printer de l'UTF8 la console ? (Run... > Onglet Common > Console Encoding)


J'ai eclipse 3.2.2
Je ne trouve pas de "Console Encoding" dans les préférences, il y a juste le choix d'encodage des fichiers java.
 
Sinon, avant de se lancer dans le dev, si il y a des Japonais qui peuvent bien me confirmer que l'on peut stocker (correctement) au moins un des alphabets en UTF-8, je suis preneur :D
 

Reply

Marsh Posté le 27-06-2007 à 12:37:55   

Reply

Marsh Posté le 27-06-2007 à 13:08:28    

http://img242.imageshack.us/img242/9383/eclipseou0.th.png

 

Pas dans les préférences, dans les options de Run.

Message cité 1 fois
Message édité par zapan666 le 27-06-2007 à 13:08:58

---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 27-06-2007 à 14:22:32    

Vous trouverez à l'adresse suivante, http://kanji.free.fr/docs.php?doc=codage , une explication claire et presque exhaustive sur les divers codages des caractères japonais.
 
Pouriez-vous être plus précis dans votre description du problème ?
 
* Vous récupérez les caractères avec Firefox. OK ?
 
* Voulez-vous afficher les caractères avec I.E. ? Pour cela il faut l'extension Windows pour le japonais, téléchargeable depuis le site de Windows update.
 
* Voulez-vous afficher les caractères dans une console DOS ? Pour cela il faudrait paramètrer le bon codepage et la police de caractère.
 
* Voulez-vous afficher les caractères dans une application Windows 32-bit ordinaire ? Pour cela, il faut utiliser les bons paramètres. Je ne l'ai pas fait en Java, mais je l'ai fait en C en appelant les API CreateFont et SelectObject.


Message édité par olivthill le 27-06-2007 à 14:25:39
Reply

Marsh Posté le 27-06-2007 à 15:12:33    

zapan666 a écrit :


Pas dans les préférences, dans les options de Run.


Désolé de faire le boulet mais je n'ai pas d'options dans Run.
Mais bon, c'est pas grave, ça s'affiche bien dans une JFrame ;)
 
 
Tout s'affiche normalement, avec IE, Firefox, fenetre java...
Ce problème est RESOLU
 
En revanche, la question est maintenant de savoir si l'UTF-8 permet de bien coder l'alphabet Japonais.

Message cité 2 fois
Message édité par ch33k0n le 27-06-2007 à 15:15:07
Reply

Marsh Posté le 27-06-2007 à 15:45:29    

ch33k0n a écrit :

Désolé de faire le boulet mais je n'ai pas d'options dans Run.
Mais bon, c'est pas grave, ça s'affiche bien dans une JFrame ;)


 :D Si l'option apparait selon l'alignement des planêtes, c'est emmerdant.
Faudrait que je vérifie que chez moi je l'ai ou pas, pour savoir si c'est un plugins qui rajoute ça ou pas.


---------------
my flick r - Just Tab it !
Reply

Marsh Posté le 29-06-2007 à 00:52:54    

ch33k0n a écrit :

Désolé de faire le boulet mais je n'ai pas d'options dans Run.
Mais bon, c'est pas grave, ça s'affiche bien dans une JFrame ;)
 
 
Tout s'affiche normalement, avec IE, Firefox, fenetre java...
Ce problème est RESOLU
 
En revanche, la question est maintenant de savoir si l'UTF-8 permet de bien coder l'alphabet Japonais.


Il permet de bien coder les caracteres japonais, que ce soit kanjis hiraganas ou katakanas, oui, pas de probleme

Reply

Marsh Posté le 25-07-2007 à 14:59:00    

Bonjour,
 
Je suis confronté un peu au même problème.
Mais en lisant les différents messages du forum, je n'ai pas vu de réponse à mon problème.
Donc si quelqu'un peut m'aider ce serait vraiment sympa.
 
Voici le problème:
----------------
J'ai un site www.international-reversi.com (un peu de pub par la meme occasion :-) qui, comme son nom l'indique, permet de jouer à Reversi à travers une applet Java.
 
Sur ce site, j'ai des membres qui s'inscrivent en saisissant des caractères chinois pour leur nom.
 
Il n'y a pas de problème sur le site, si les caractères sont installés sur le poste client, l'affichage est correcte.
Mais sur mon applet, les caractères sont remplacés par des points d'intérogations.
 
Comment faire pour afficher les caractères chinois sur mon applet ?
 
Merci d'avance à ceux qui sauront m'aider à résoudre mon problème...

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed