Choisir l'encodage d'un composant particulier... - Java - Programmation
Marsh Posté le 29-05-2004 à 23:30:00
et qu'est-ce que tu voudrais faire avec un encodage plus restreint qu'unicode?
Marsh Posté le 30-05-2004 à 09:28:10
convertir par exemple une chaine en encodage EUC_JP vers de l'unicode, parce que EUC_JP affiché en unicode ne donne pas le résultat correct...
Marsh Posté le 30-05-2004 à 09:55:31
antsite a écrit : convertir par exemple une chaine en encodage EUC_JP vers de l'unicode, parce que EUC_JP affiché en unicode ne donne pas le résultat correct... |
raté.
En java, *tout* est en unicode 16bits. On converti donc tout en entrée et en sortie depuis/vers les encodages particuliers.
on fait ça avec un StreamReader ou un StreamWriter. C'est la différence entre un Stream et un Reader : un Stream c'est des bytes quelconques (donc possiblement à un encodage douteux) alors qu'un Reader ça pompe uniquement des chars (donc unicode 16 bits).
Marsh Posté le 30-05-2004 à 10:53:18
Donc je mets dans le StreamReader ma chaine EUC_JP et il me la mettra en unicode ?
Marsh Posté le 30-05-2004 à 10:57:31
antsite a écrit : Donc je mets dans le StreamReader ma chaine EUC_JP et il me la mettra en unicode ? |
mais tu la sors d'où ta chaine ? ça ne devrait jamais avoir été une chaine. au pire un tableau de bytes. Il faut absolument que tu trouves par où elle est rentrée dans l'application et que tu colmates la brêche.
D'ailleur java ne propose rien pour changer l'encodage d'un chaine (même si on peut le faire à coup de trucs deprecated ou pas beaux).
Marsh Posté le 30-05-2004 à 11:31:15
en fait c'est le principe de l'application :
je veux donner dans un JTextField une chaine qui n'est visible (correctement) qu'en EUC_JP. Bon donc je vais récupérer le contenu du JTextField, et ensuite voudrais l'afficher dans un JLabel mais que ce JLabel affiche en EUC_JP et non en Unicode.
En gros c'est comme dans IE : on peut sélectionner son code, ben je voudrais faire pareil.
Marsh Posté le 30-05-2004 à 11:33:59
normalement, ton JTextField comme ton JLabel sont en unicode. C'est le code de saisie du JTextField qui fait la conversion.
Marsh Posté le 30-05-2004 à 11:37:41
En fait c'est comme sous XP : les noms de fichiers peuvent être en unicode, mais si je récupère un fichier nommé en EUC_JP, XP ne vas pas me le convertir correctement, il va tenter de l'afficher en unicode, mais vu que ce n'est pas le bon codage, le résultat sera imcompréhensible. Et la seule façon que j'ai de voir correctement le nom c'est de le mettre dans une page web, et de dire à mon browser d'afficher en EUC_JP...
Marsh Posté le 30-05-2004 à 11:59:21
nraynaud a écrit : normalement, ton JTextField comme ton JLabel sont en unicode. |
bha oui ... donc devrait pas y a vio de soucis ...
Marsh Posté le 30-05-2004 à 12:01:54
benou a écrit : bha oui ... donc devrait pas y a vio de soucis ... |
sauf qu'il y a des cas où les encodings sont mal détectés car il n'existe pas de protocole pour les indiquer. Aussi des petits bugs dans les HAL.
Marsh Posté le 30-05-2004 à 12:04:22
nraynaud a écrit : sauf qu'il y a des cas où les encodings sont mal détectés car il n'existe pas de protocole pour les indiquer. |
hein ?
là java va utiliser l'encoding par défaut du système et basta. Je vois pas pkoi il utiliserait un encoding différent dans un textfield et dans un label ...
Marsh Posté le 29-05-2004 à 16:34:54
Salut,
je cherche à pouvoir définir moi même l'encodage de mon Jlabel par exemple. Je sais que Java fait tout en unicode il me semble, mais est-ce que je peux spécifier une autre norme ISO-xxx-xxx ?
J'ai vu une fonction setDefaultLocale, mais ça m'a pas trop éclairé...
merci
ANT