Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1530 connectés 

  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Les Charset en Java

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[JAVA] Les Charset en Java

n°538168
zop
1 world, 1 web, 1 Windows
Posté le 13-10-2003 à 14:00:13  profilanswer
 

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 ?"
mood
Publicité
Posté le 13-10-2003 à 14:00:13  profilanswer
 

n°538184
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-10-2003 à 14:10:42  profilanswer
 

C'est quoi, l'"encodeur" ? :??:


---------------
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.
n°538190
zop
1 world, 1 web, 1 Windows
Posté le 13-10-2003 à 14:15:40  profilanswer
 

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.


---------------
- "Qui diable es-tu ?"
n°538204
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-10-2003 à 14:24:25  profilanswer
 

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 ?


---------------
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.
n°538210
zop
1 world, 1 web, 1 Windows
Posté le 13-10-2003 à 14:30:38  profilanswer
 

Tout-à-fait monsieur.


---------------
- "Qui diable es-tu ?"
n°538224
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-10-2003 à 14:40:59  profilanswer
 

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à ?


---------------
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.
n°538231
gilou
Modérateur
Modzilla
Posté le 13-10-2003 à 14:50:51  profilanswer
 

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 :

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à ?

Et avec un byte order mark en premier?
A+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
n°538238
Taiche
(╯°□°)╯︵ ┻━┻
Posté le 13-10-2003 à 14:55:48  profilanswer
 

gilou a écrit :

Et avec un byte order mark en premier?
A+,


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.


---------------
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.
n°538498
benou
Posté le 13-10-2003 à 17:44:23  profilanswer
 

j'ai pas encore touché au java.nio, mais ca ca marche pas ?  
 

Code :
  1. import java.io;
  2. InputStream inStreamUTF16 = ...; // tu vas le lire dans ton zip
  3. InputStreamReader readerUTF16 = new InputSteramReader(inStreamUTF16 , "UTF-16" );
  4. OutputStream outStreamISO = new FileOutputStream("ton fichier de sauvegarde" );
  5. Writer writerISO = new OutputStreamWriter(outStreamISO, "ISO-8859-1" );
  6. // copie du flux
  7. byte[] buffer = new byte[1024];
  8. int nbRead;
  9. while ((nbRead = readerUTF16.read(buffer)) > 0) {
  10.    writerISO.write(buffer, 0, nbRead);
  11. }
  12. writerISO.close();
  13. readerUTF16.close();


 
(j'ai pas testé alors je promets pas qu'il y a pas de faute de syntaxe ;))


---------------
ma vie, mon oeuvre - HomePlayer
n°538543
gilou
Modérateur
Modzilla
Posté le 13-10-2003 à 18:34:33  profilanswer
 

Taiche a écrit :


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.


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+,


---------------
There's more than what can be linked! --    Iyashikei Anime Forever!    --  AngularJS c'est un framework d'engulé!  --
mood
Publicité
Posté le 13-10-2003 à 18:34:33  profilanswer
 

n°538661
Cherrytree
cn=?
Posté le 13-10-2003 à 20:55:18  profilanswer
 

[:blueflag]


---------------
Le site de ma maman

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  Java

  [JAVA] Les Charset en Java

 

Sujets relatifs
creer un fichier excel avec macro en javaQue choisir pour bien programmer en Java ?
Le meilleur moyen de représenter des matrices en javaLe meilleur moyen de lire / écrire dans un fichier en java
[java] un bon livre pour faire de la programation java[JAVA] PopupMenu sur un TextArea : cacher le popup windows
[Java] Plusieurs versions de JVM installées : problème[Java] faire tourner une appli 1.4.1 sur Mac OS 9.x
[java] aide pour structurer une fonction[APPLET] Intégrer un éditeur HTML opensource Java
Plus de sujets relatifs à : [JAVA] Les Charset en Java


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR