ResourceBundle + System.out + accents - Java - Programmation
Marsh Posté le 24-10-2002 à 15:48:38
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!)
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!) |
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!) |
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 ?
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:
ça m'affiche qqchose comme
|
Mmmh, maLocale est definie comment ?
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)
Marsh Posté le 24-10-2002 à 16:51:12
jdk1.3 powaaa
je connais la sortie
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) |
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.
Marsh Posté le 24-10-2002 à 17:07:09
BC-A a écrit a écrit :![]() 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. |
- 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
Marsh Posté le 24-10-2002 à 17:14:06
--greg-- a écrit a écrit :![]() - 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 ![]() |
Hopopop !
Je te propose juste des pistes pour identifier le probleme hein.
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 ?
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.
Marsh Posté le 24-10-2002 à 17:49:09
c'est surement pas un probleme de fonte (en CONSOLE ), ni de Locale
mais merci qd meme
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
j'avais du fumer le jour ou j'ai vu ça?
(pourtant je fume po )
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?
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)
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.
Marsh Posté le 25-10-2002 à 17:59:48
heureusement qu'il y a l'edit, sans quoi c'était un peu inutile
merci
Marsh Posté le 25-10-2002 à 18:00:49
Désolé
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.
Marsh Posté le 25-10-2002 à 18:04:27
BifaceMcLeOD a écrit a écrit : Désolé ![]() ![]() En fait, à ma connaissance, dans la vie réelle ![]() |
ouais ben euh c un peu limite quand meme je trouve
donc merci
Marsh Posté le 25-10-2002 à 18:05:02
euh ça marche pas
Marsh Posté le 24-10-2002 à 15:47:43
Qqun peut m'expliquer pourquoi (et comment y remédier)
ceci:
m'affiche
é
dans la console, alors que si j'ai un fichier resource avec par exemple
blabla=pouét
et que je fais
ça m'affiche qqchose comme
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!