Les Charset en Java [JAVA] - Java - Programmation
Marsh Posté le 13-10-2003 à 14:10:42
C'est quoi, l'"encodeur" ?
Marsh Posté le 13-10-2003 à 14:15:40
Je n'ai pas été précis à ce niveau-là, pardon il s'agit de la classe : java.nio.charset.Charset qui, comme son nom l'indique sert à gérer les différents charset, encoder, décoder.
Marsh Posté le 13-10-2003 à 14:24:25
Ah OK. Donc c'que tu fais c'est bien un truc du genre
Charset cs = Charset.forName("ISO-8859-1" );
cs.encode(taChaineEnUTF16);
? Et c'est ça qui merde ?
Marsh Posté le 13-10-2003 à 14:30:38
Tout-à-fait monsieur.
Marsh Posté le 13-10-2003 à 14:40:59
Humpf. Ca va p'têt venir du problème big endian/little endian d'UTF-16 J'ai jamais fait ce genre de conversion mais la javadoc spécifie :
Citation : The UTF-16 charsets use sixteen-bit quantities and are therefore sensitive to byte order. |
dans la classe java.nio.charset.Charset. P'têt que ça vient de là ?
Marsh Posté le 13-10-2003 à 14:50:51
Taiche a écrit : Humpf. Ca va p'têt venir du problème big endian/little endian d'UTF-16 J'ai jamais fait ce genre de conversion mais la javadoc spécifie :
|
Et avec un byte order mark en premier?
A+,
Marsh Posté le 13-10-2003 à 14:55:48
gilou a écrit : Et avec un byte order mark en premier? |
Bin c'est là toute la question, savoir s'il y en a ou pas dans le document traité par Zop. Extrait suivant de la javadoc :
Citation : When decoding, the UTF-16 charset interprets a byte-order mark to indicate the byte order of the stream but defaults to big-endian if there is no byte-order mark; when encoding, it uses big-endian byte order and writes a big-endian byte-order mark. |
Donc si y en a pas, ça part sur du big endian et si j'inverse pas tout, je crois que sur Ouinedoze c'est little endian. Bref, tout dépend de la plate-forme et de la présence du byte-order mark.
Marsh Posté le 13-10-2003 à 17:44:23
j'ai pas encore touché au java.nio, mais ca ca marche pas ?
Code :
|
(j'ai pas testé alors je promets pas qu'il y a pas de faute de syntaxe )
Marsh Posté le 13-10-2003 à 18:34:33
Taiche a écrit :
|
Un fichier encodé en UTF-16 devrait toujours demarrer par une BOM. S'il y en a pas, c'est que c'est codé comme un pied, et que l'on peut s'attendre a des pbs de transport d'une plateforme a une autre.
Pour des flux avec protocole, on peut se dispenser de la BOM en indiquant: UTF-16BE ou UTF-16LE dans le protocole.
Si ton fichier est en XML et commence par une declaration XML ( <!xml... ) tu peux t'en sortir en regardant ce que tu recuperes au depart.
A+,
Marsh Posté le 13-10-2003 à 14:00:13
Salut à tous,
je suis face à un problème qui me dérange : j'ai créer un tout petit programme qui va récupérer un fichier zippé à une URL précise, le décompresse et tente de l'encoder en ISO-8859-1 (à la base il s'agit d'UTF-16). C'est là que survient mon ennui : l'encodeur semble ne pas supporter le "é", tous les caractères suivants sont remplacés par des "?", quelqu'un connaît-il le problème ? Une solution à par réécrire un encodeur ?
Merci d'avance.
Je suis sous Windows 2000 SP4 JDK 1.4.2.
---------------
- "Qui diable es-tu ?"