[java]Pb de caracteres

Pb de caracteres [java] - Java - Programmation

Marsh Posté le 14-03-2005 à 11:26:25    

Bonjour,
Voila je suis debutant en java et je dois utiliser des caracteres en japonais dans un JTextPane. La premiere chose que je ne comprends pas c'est que lorsque je fais

Code :
  1. JTextPane editeur = new JTextPane();
  2. editeur.setText("駅で三十分ぐらい待たさ" );


Dans ce cas il ne s'affiche que des ???
 
alors que si je fait un copier coller de cette meme chaine dans mon JTextPane elle s'affiche sans pb. Quelqun peut il m'expliquer comment ca se fait?  
 
Mon deuxieme probleme est de reussir a identifier quels sont les caracteres japonais et les caracteres francais tappés dans le JTextPane. Y a t il un moyen (assez simple) de faire ca?
 
Merci pour votre aide

Reply

Marsh Posté le 14-03-2005 à 11:26:25   

Reply

Marsh Posté le 14-03-2005 à 11:33:24    

Bin t'utilises quelle fonte, déjà ? :o Passke si la fonte utilisée est pas capable d'afficher des caractères Japonais, faut pas s'étonner.
Ensuite, foutre du Japonais cash dans le code, je sais pas, ça me paraît un peu violent [:joce]
Pour différencier le Japonais du Français, à part faire une comparaison sur la valeur Unicode de chaque char, je pense pas qu'il y ait un moyen simple.


Message édité par Taiche le 14-03-2005 à 11:34:21

---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 14-03-2005 à 11:54:42    

pour tout ce qui est internationalisation, regrde du côté de java.util.ResourceBundle


---------------
ma vie, mon oeuvre - HomePlayer
Reply

Marsh Posté le 14-03-2005 à 14:00:30    

j'ai pas specifier de fonte speciale (d'ailleur je sais pas comment faire) Mais si ca marche en faisant le copier coller c'est qu'il arrive bien a trouver la fonte dont il a besoin?
 
bon je vais aussi regarder java.util.ResourceBundle

Reply

Marsh Posté le 14-03-2005 à 14:24:40    

Si ça marche avec copier/coller ouais, y a des chances que la fonte soit OK.
Sinon, c'est certainement le coup du Japonais direct dans le source, passke Java va créer la chaîne "駅で三十分ぐらい待たさ" en passant le charset par défaut de la plate-forme. Essaie en mettant des caractères du genre "\uXXXX" où XXXX correspond à la valeur Unicode de ton caractère japonais.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 14-03-2005 à 14:49:00    

Taiche a écrit :

Si ça marche avec copier/coller ouais, y a des chances que la fonte soit OK.
Sinon, c'est certainement le coup du Japonais direct dans le source, passke Java va créer la chaîne "駅で三十分ぐらい待たさ" en passant le charset par défaut de la plate-forme.


euh, "Java" ? tu peux etre plus précis sur ce coup? ... le compilo lis ça en unicode non?


---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 14-03-2005 à 15:47:31    

the real moins moins a écrit :

euh, "Java" ? tu peux etre plus précis sur ce coup? ... le compilo lis ça en unicode non?


J'demande à voir la compilation et le runtime du truc sur une plate-forme anglaise ou française, par exemple [:spamafote]
Un truc qui est certain, c'est qu'ici, sur ma machine US avec fontes japonaises, ça met effectivement des ??? partout. Donc à mon avis, c'est le compilo qui est en cause ; faudrait voir où exactement mais je ne pense pas qu'il lise lui-même le code en Unicode.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 14-03-2005 à 15:55:10    

Ah bin je viens de trouver ça : http://www.jorendorff.com/articles/unicode/java.html

Citation :

Unicode Text in Java Source Code
 
You can also type Unicode data directly into a Java program. The javac compiler can read Java source files using the encoding of your choice. So ordinarily, you can type non-ASCII characters directly into a string—or even a variable name.


Suit un exemple en allemand qui doit pouvoir s'appliquer au japonais avec le bon charset, j'imagine.


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 14-03-2005 à 16:00:35    

Bon alors je vien d'esayer de changer la fonte et ca me donne le meme resultat(??) J'ai aussi essayer avec \uXXXX et en effet ca marche mais c pas tres pratique.
Enfin merci de votre aide.
Je vais voir du coté de cet exemple allemand... On verra

Reply

Marsh Posté le 14-03-2005 à 16:02:21    

Taiche a écrit :

Donc à mon avis, c'est le compilo qui est en cause ; faudrait voir où exactement mais je ne pense pas qu'il lise lui-même le code en Unicode.


ok c'est ce que je voulais savoir :)
 
 
.. cela dit, maintenant que tu dis ça:

Citation :

# /usr/java/jdk1.5/bin/javac --help
javac: invalid flag: --help
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files
  -cp <path>                 Specify where to find user class files
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -d <directory>             Specify where to place generated class files
-encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system


Message édité par the real moins moins le 14-03-2005 à 16:02:29

---------------
Hey toi, tu veux acheter des minifigurines Lego, non ?
Reply

Marsh Posté le 14-03-2005 à 16:02:21   

Reply

Marsh Posté le 14-03-2005 à 16:06:38    

yeahman99 a écrit :

Bon alors je vien d'esayer de changer la fonte et ca me donne le meme resultat(??) J'ai aussi essayer avec \uXXXX et en effet ca marche mais c pas tres pratique.
Enfin merci de votre aide.
Je vais voir du coté de cet exemple allemand... On verra


Oui, le coup des \uXXXX spa très rigolo :D Mais dans la page que j'ai linkée au-dessus, y a un jouli exemple d'utilisation des Readers de java.io pour lire des fichiers texte en Japonais : à mon avis c'est une solution déjà plus pratique.

the real moins moins a écrit :

ok c'est ce que je voulais savoir :)
 
 
.. cela dit, maintenant que tu dis ça:

Citation :

# /usr/java/jdk1.5/bin/javac --help
javac: invalid flag: --help
Usage: javac <options> <source files>
where possible options include:
  -g                         Generate all debugging info
  -g:none                    Generate no debugging info
  -g:{lines,vars,source}     Generate only some debugging info
  -nowarn                    Generate no warnings
  -verbose                   Output messages about what the compiler is doing
  -deprecation               Output source locations where deprecated APIs are used
  -classpath <path>          Specify where to find user class files
  -cp <path>                 Specify where to find user class files
  -sourcepath <path>         Specify where to find input source files
  -bootclasspath <path>      Override location of bootstrap class files
  -extdirs <dirs>            Override location of installed extensions
  -endorseddirs <dirs>       Override location of endorsed standards path
  -d <directory>             Specify where to place generated class files
-encoding <encoding>       Specify character encoding used by source files
  -source <release>          Provide source compatibility with specified release
  -target <release>          Generate class files for specific VM version
  -version                   Version information
  -help                      Print a synopsis of standard options
  -X                         Print a synopsis of nonstandard options
  -J<flag>                   Pass <flag> directly to the runtime system



Ouais mais j't'ai grillaid de 7 minutes [:dark-imperator]


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 14-03-2005 à 16:06:50    

ton éditeur sauve bien ton source en utf-8 je suppose ?
 
et en argu à javac si tu lui donnes -encoding UTF8 ça donne quoi ?
 
sinon ya aussi native2ascii du SDK pour convertir tous les caractères non ASCII d'un fichier en leur code unicode.
 
edit: mais pas si viteeee !!


Message édité par push le 14-03-2005 à 16:08:18
Reply

Marsh Posté le 15-03-2005 à 09:55:15    

Ca y est ca marche! il fallait en effet lui specifier l'UTF8!
Merci de votre aide.
Il me reste ma deuxieme question: comment isolé dans mon JTextPane les elements en japonais et les elements en francais? Taiche tu disais q'il faut passer par la comparaison d'unicode? Il y a pas mieux?


Message édité par yeahman99 le 15-03-2005 à 09:55:29
Reply

Marsh Posté le 15-03-2005 à 10:27:18    

Bin... y a p'têt une astuce mieux que ça hein, mais comme j'ai jamais eu ce besoin, je peux pas te dire [:spamafote]
Un truc déjà : la valeur Unicode d'un caractère FR sera a priori toujours inférieure à 256 (les caractères FR sont encodés sur un seul octet alors que les caractères Japonais le sont sur 2), donc en faisant une connerie du style "test si la valeur chaque char de la chaîne est inférieur à 256", tu pourrais t'en sortir.
Mais j'te dis ça, c'est p'têt pas le plus propre ou le plus sûr...


---------------
Everyone thinks of changing the world, but no one thinks of changing himself  |  It is the peculiar quality of a fool to perceive the faults of others and to forget his own  |  Early clumsiness is not a verdict, it’s an essential ingredient.
Reply

Marsh Posté le 15-03-2005 à 11:16:21    

Ok merci quand meme!

Reply

Sujets relatifs:

Leave a Replay

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