ResourceBundle + System.out + accents

ResourceBundle + System.out + accents - Java - Programmation

Marsh Posté le 24-10-2002 à 15:47:43    

Qqun peut m'expliquer pourquoi (et comment y remédier)
 
ceci:

Code :
  1. System.out.println("é" );


m'affiche
 

Citation :

é

 
dans la console, alors que si j'ai un fichier resource avec par exemple
 

blabla=pouét

 
et que je fais
 

Code :
  1. ResourceBundle rb = ResourceBundle.getBundle("monfichier", maLocale);
  2. System.out.println(rb.getString("blabla" ));

ça m'affiche qqchose comme
 

Citation :

pouΘt

 
 
:(
 
(le char bizarre etant un Omega, je crois)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 24-10-2002 à 15:47:43   

Reply

Marsh Posté le 24-10-2002 à 15:48:38    

[:cupra]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 24-10-2002 à 16:15:13    

il faut être assez malade pour utiliser un ResourceBundle pour lire dans un fichier ... (un FileInputStream ou autre Stream à base de File est nettement mieux!)

Reply

Marsh Posté le 24-10-2002 à 16:16:22    

western a écrit a écrit :

il faut être assez malade pour utiliser un ResourceBundle pour lire dans un fichier ... (un FileInputStream ou autre Stream à base de File est nettement mieux!)




 
 [:rofl]  [:rofl]  [:rofl]


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 24-10-2002 à 16:19:59    

western a écrit a écrit :

il faut être assez malade pour utiliser un ResourceBundle pour lire dans un fichier ... (un FileInputStream ou autre Stream à base de File est nettement mieux!)



:heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 24-10-2002 à 16:20:33    

western a écrit a écrit :

il faut être assez malade pour utiliser un ResourceBundle pour lire dans un fichier ... (un FileInputStream ou autre Stream à base de File est nettement mieux!)



je pourrais aussi utiliser 3 int au lieu de java.util.Date, qu'en penses-tu ?


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 24-10-2002 à 16:40:22    

--greg-- a écrit a écrit :

Qqun peut m'expliquer pourquoi (et comment y remédier)
 
ceci:

Code :
  1. System.out.println("é" );


m'affiche
 

Citation :

é

 
dans la console, alors que si j'ai un fichier resource avec par exemple
 

blabla=pouét

 
et que je fais
 

Code :
  1. ResourceBundle rb = ResourceBundle.getBundle("monfichier", maLocale);
  2. System.out.println(rb.getString("blabla" ));

ça m'affiche qqchose comme
 

Citation :

pouΘt

 
 
:(
 
(le char bizarre etant un Omega, je crois)




Mmmh, maLocale est definie comment ?


---------------
Traduction FR de FileZilla Server
Reply

Marsh Posté le 24-10-2002 à 16:47:31    

BC-A a écrit a écrit :

 
Mmmh, maLocale est definie comment ?



bah euh n'importe comment
à la limite ça fait pareil si je fais getBundle(lenom) sans spécifier de locale...
sinon euh ouais hum ici là je fais des trucs du genre new Locale("fr", "" ), sans specifier de pays, puisque ce cher jdk1.3 n'a pas de constructeur avec uniquement la langue pour Locale (contrairement au 1.4)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 24-10-2002 à 16:51:12    

jdk1.3 powaaa
 
je connais la sortie


---------------
Just because you feel good does not make you right
Reply

Marsh Posté le 24-10-2002 à 16:55:37    

--greg-- a écrit a écrit :

bah euh n'importe comment
à la limite ça fait pareil si je fais getBundle(lenom) sans spécifier de locale...
sinon euh ouais hum ici là je fais des trucs du genre new Locale("fr", "" ), sans specifier de pays, puisque ce cher jdk1.3 n'a pas de constructeur avec uniquement la langue pour Locale (contrairement au 1.4)




 :D  
Tu es dans une applet ?
 
Sinon essaye de construire ta locale avec la locale par default JVM
Locale maLocale = Locale.getDefault();
 
Ensuite, ton font.properties il est bon ou pas ?
Il faut redemarrer la JVM pour relire le font.properties si tu y changes qqchose.
 


---------------
Traduction FR de FileZilla Server
Reply

Marsh Posté le 24-10-2002 à 16:55:37   

Reply

Marsh Posté le 24-10-2002 à 17:07:09    

BC-A a écrit a écrit :

 
 :D  
Tu es dans une applet ?
 
Sinon essaye de construire ta locale avec la locale par default JVM
Locale maLocale = Locale.getDefault();
 
Ensuite, ton font.properties il est bon ou pas ?
Il faut redemarrer la JVM pour relire le font.properties si tu y changes qqchose.
 
 



:heink:  
- je suis en console
- si j'ai une locale dans mon appli c'est pas pour utiliser la default, mais justement pour pouvoir afficher les messages dans une langue choisir par l'utilisateur :heink:


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 24-10-2002 à 17:14:06    

--greg-- a écrit a écrit :

 :heink:  
- je suis en console
- si j'ai une locale dans mon appli c'est pas pour utiliser la default, mais justement pour pouvoir afficher les messages dans une langue choisir par l'utilisateur :heink:




Hopopop !
 
Je te propose juste des pistes pour identifier le probleme hein.


---------------
Traduction FR de FileZilla Server
Reply

Marsh Posté le 24-10-2002 à 17:18:25    

Euh bin en fait, perso, quand j'fais un System.out.println("pouét" ); tout con, j'ai aussi un "pouΘt" qui s'affiche (console MS-DOS). Par contre, quand je lis le truc via un ResourceBundle puis que j'écris ce que je lils dans un fichier texte, bin j'ai bien un "pouét" dans le fichier.
Donc c'est p'têt plus un problème de console qu'un problème de Locale ou de ResourceBundle, nan ?


---------------
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 24-10-2002 à 17:22:51    

Taiche a écrit a écrit :

Euh bin en fait, perso, quand j'fais un System.out.println("pouét" ); tout con, j'ai aussi un "pouΘt" qui s'affiche (console MS-DOS). Par contre, quand je lis le truc via un ResourceBundle puis que j'écris ce que je lils dans un fichier texte, bin j'ai bien un "pouét" dans le fichier.
Donc c'est p'têt plus un problème de console qu'un problème de Locale ou de ResourceBundle, nan ?




Possible, ou un probleme de fonte.


---------------
Traduction FR de FileZilla Server
Reply

Marsh Posté le 24-10-2002 à 17:49:09    

c'est surement pas un probleme de fonte (en CONSOLE :heink:), ni de Locale
mais merci qd meme :)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 24-10-2002 à 17:51:30    

Taiche a écrit a écrit :

Euh bin en fait, perso, quand j'fais un System.out.println("pouét" ); tout con, j'ai aussi un "pouΘt" qui s'affiche (console MS-DOS). Par contre, quand je lis le truc via un ResourceBundle puis que j'écris ce que je lils dans un fichier texte, bin j'ai bien un "pouét" dans le fichier.
Donc c'est p'têt plus un problème de console qu'un problème de Locale ou de ResourceBundle, nan ?



ha ben putain, je viens de réessayer, et moi aussi en fait :o
j'avais du fumer le jour ou j'ai vu ça?
(pourtant je fume po :cry:)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 24-10-2002 à 18:12:50    

Ca m'a toujours fait ce genre de trucs les accents dans une console DOS. Ca peut pas venir d'un problème d'encodage mal compris par MS DOS?

Reply

Marsh Posté le 24-10-2002 à 18:19:32    

DuchZeWorld a écrit a écrit :

Ca m'a toujours fait ce genre de trucs les accents dans une console DOS. Ca peut pas venir d'un problème d'encodage mal compris par MS DOS?



ben vi sans doute.
System.setOut(..... PLOP)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 25-10-2002 à 17:07:06    

C'est un problème de table de caractères. Java utilise Unicode, qui code tous les caractères du monde sur 16 bits.
 
Mais la plupart des OS, comme la plupart des programmes, supposent que les caractères sont représentés sur 8 bits, donc un seul octet. Et comme on a beaucoup plus que 256 caractères dans le monde, on a inventé la notion de table de caractères. Parmi celles-ci, les 3 plus utilisées en Europe de l'Ouest sont iso-8859-1, appelée aussi iso-latin-1, les codes de page 437 et 850 (Windows utilise en fait win-1252, qui est un pseudo-clone d'iso-latin-1 : quasiment tous les caractères y sont les mêmes que dans iso-latin-1). A noter que les 256 premiers caractères d'Unicode sont précisément les 256 caractères d'iso-latin-1.
 
Et dans ton cas, tu tombes précisément sur un conflit de table de caractères : les consoles MS-DOS utilisent la page de code 437 ou 850 (437 est en fait la page de code des Etat-Unis et 850 celle de l'Europe de l'ouest), et Windows utilise win-1252.
 
Si tu regardes précisément ces 2 tables de caractères, tu verras que le caractère 'é' de la table win-1252 a pour code 233, mais que ce même code 233, dans la page de code 437, encode le caractère 'Θ'.
 
Donc, quand Java envoie dans la console le caractère ayant pour code 233 (qu'il considère être le caractère 'é';), la console reçoit et affiche le caractère correspondant au code 233 (qu'elle considère être le caractère 'Θ';).
 
Comme disait je ne sais plus quel vieil informaticien : "It's not a bug, it's a feature!"
 
edit> Si tu es sous Windows NT/2000, tu dois sans doute pouvoir corriger le problème en tapant la commande suivante dans ta console : chcp 1252.


Message édité par BifaceMcLeOD le 25-10-2002 à 17:13:49
Reply

Marsh Posté le 25-10-2002 à 17:59:48    

heureusement qu'il y a l'edit, sans quoi c'était un peu inutile :o
 
merci ;)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 25-10-2002 à 18:00:49    

Désolé  :o  :D
 
En fait, à ma connaissance, dans la vie réelle ;) , on vit quasiment toujours avec ce problème, sans essayer de le corriger ou le contourner.


Message édité par BifaceMcLeOD le 25-10-2002 à 18:02:05
Reply

Marsh Posté le 25-10-2002 à 18:04:27    

BifaceMcLeOD a écrit a écrit :

Désolé  :o  :D
 
En fait, à ma connaissance, dans la vie réelle ;) , on vit quasiment toujours avec ce problème, sans essayer de le corriger ou le contourner.



ouais ben euh c un peu limite quand meme je trouve :o
donc merci ;)


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 25-10-2002 à 18:05:02    

euh ça marche pas :o


---------------
#19b | Mardi 18 Février 2003 - nous fêtons les Bernadette | contre le fleur icq!
Reply

Marsh Posté le 25-10-2002 à 19:47:07    

Ceci explique sans doute peut-être cela... :ange:

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

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