Envoyé par
thelvin
Je confirme qu'il ne faut pas le faire, mais que c'est évidemment possible. De la même manière, rien n'empêche de poser une étiquette "haricots" sur un bocal à cornichons, mais les enfants qui passent par là croiront pendant des années qu'un cornichon s'appelle un haricot.
Oui, c'est exact, mais il faut bien comprendre que ce que Java utilise en interne pour stocker ses String ne te concerne pas.
Il utilise un moyen qui lui permet de stocker tout Unicode, donc il peut stocker de l'Unicode. C'est tout ce qu'il y a à savoir, du moins dans ton cas.
Bon, sinon : en ce qui me concerne je ne t'avais pas répondu car il y avait quelque chose que je trouvais incohérent dans tes résultats. Mais comme personne ne semble répondre, j'ai essayé de reproduire tes résultats et j'ai été bluffé : en fait il n'y a aucune incohérence, juste un fait rare.
Mais bref. J'ai besoin de plus d'informations.
En quoi  est-il un caractère spécial ?
Quelle information votre fichier XML doit-il contenir, au juste ? Le texte de ce fichier XML, est-ce que ça doit être "EC£50" ou bien "EC£50" ?
J'explique : quand on transforme la chaîne "EC£50" en octets, voici ce qu'on obtient :
En UTF-8 :
E: 0x45 ;
C: 0x43 ;
£: 0xc2 ; 0xa3
5: 0x35 ;
0: 0x30
En latin-1 :
E: 0x45 ;
C: 0x43 ;
£: 0xa3 ;
5: 0x35 ;
0: 0x30
C'est super bizarre, mais en UTF-8, £ se code exactement comme en latin-1, avec juste un octet devant. Je n'avais jamais remarqué que ça pouvait arriver.
Du coup, en utf-8, il n'y a pas de "charactère spécial Â" devant le £. £ se représente avec deux octets : 0xc2 ; 0xa3 et il se trouve qu'en latin-1, 0xc2 est Â, et 0xa3 est £.
Ce "caractère spécial" n'est a priori pas à afficher, et il semble qu'il n'y ait aucun problème.
Il faudrait que tu vérifies.
Partager