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

  FORUM HardWare.fr
  Programmation
  Java

  Question : pb accents en utf8

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Question : pb accents en utf8

n°494023
pilou50
Posté le 22-08-2003 à 08:57:09  profilanswer
 

Bonjour,
 
Mon problème concerne l'affichage des accents en iso ou utf8.
 
Je récupère le contenu d'une page html (page1) via un objet HttpURLConnection. Je copie ensuite ce contenu dans une nouvelle page html (page2). Il n'y a pas de problème d'affichage dans page2 lorsque page1 est de la forme :  

Code :
  1. <html>
  2. ...
  3. </html>


 
En revanche, il y un problème d'accent lorsque page1 est de la forme :

Code :
  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
  3. <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="fr" lang="fr">
  4. <head>
  5. <title>Les résultats</title>
  6. <meta http-equiv="Content-type" content="text/html; charset=utf-8" />
  7. <meta http-equiv="Content-language" content="fr" />
  8. .....
  9. </html>


 
Dans ce cas, page2 ne gère pas les accents (car la page est codée en utf8). Ce que je ne comprends pas, c'est que j'ai toujours ce problème d'accent lorsque je supprime les lignes qui indique que la page est codée en utf8 (appel à une regex pour la suppression de ces infos).
 
Quelqu'un peut-il m'expliquer pourquoi?
Comment faire pour que page2 affiche bien les accents? (en iso)
 
Si vous avez besoin de plus de précisions, n'hésitez pas à me les demander.
Merci.

mood
Publicité
Posté le 22-08-2003 à 08:57:09  profilanswer
 

n°494025
darklord
You're welcome
Posté le 22-08-2003 à 08:58:22  profilanswer
 

Bin tu peux pas mettre d'accents en UTF-8 [:mlc]
 
Utilise un code ISO-8859-1 par exemple à la place. Y a des gens qui se cherchent des problèmes, exagéré [:wam]

n°494085
pilou50
Posté le 22-08-2003 à 09:51:56  profilanswer
 

DarkLord a écrit :

Bin tu peux pas mettre d'accents en UTF-8 [:mlc]
 
Utilise un code ISO-8859-1 par exemple à la place. Y a des gens qui se cherchent des problèmes, exagéré [:wam]


 
Bon, Ok! J'ai une autre question.
Voici mon code pour transformer une chaine, codée en ISO, en UTF-8.
Apparement il ne marche pas puisqu'il met des points d'interogation à la place des accents. Y'a-t-il une explication?
Merci de ta patience !  ;)  
 

Code :
  1. try{
  2. ch_utf=new String(ch.getBytes("ISO-8859-1" ), "UTF-8" );
  3. }
  4. catch(UnsupportedEncodingException uee)
  5.  {System.err.println(uee);}

n°494093
benou
Posté le 22-08-2003 à 09:57:20  profilanswer
 

DarkLord a écrit :

Bin tu peux pas mettre d'accents en UTF-8 [:mlc]


bien ssûr que tu peux ... à condition d'enregistrer le fichier en UTF-8 et de le lire ensuite en UTF-8 :)


---------------
ma vie, mon oeuvre - HomePlayer
n°494094
Taz
bisounours-codeur
Posté le 22-08-2003 à 09:57:39  profilanswer
 

DarkLord a écrit :

Bin tu peux pas mettre d'accents en UTF-8 [:mlc]
 
Utilise un code ISO-8859-1 par exemple à la place. Y a des gens qui se cherchent des problèmes, exagéré [:wam]

:non: tout marche très bien en utf-8. aussure toi que ton source est en UTF-8 et que le navigateur en face est capable de le décoder. l'utf-8, c'est bien mieux que tous ces iso à la con.

n°494100
benou
Posté le 22-08-2003 à 10:01:09  profilanswer
 

pilou50 a écrit :


Code :
  1. try{
  2. ch_utf=new String(ch.getBytes("ISO-8859-1" ), "UTF-8" );
  3. }
  4. catch(UnsupportedEncodingException uee)
  5.  {System.err.println(uee);}

 


ce que tu fais n'a pas de sens : une String en Java n'a pas de codage. C'est au moment où tu vas transformer ta Strig java en donnée binaire (écriture dans un fichier) que là c'est important d'utiliser le bon encodage.
 
mais l'opération que tu fais au dessus n'as pas sens ...


---------------
ma vie, mon oeuvre - HomePlayer
n°494101
darklord
You're welcome
Posté le 22-08-2003 à 10:01:32  profilanswer
 

Taz a écrit :

:non: tout marche très bien en utf-8. aussure toi que ton source est en UTF-8 et que le navigateur en face est capable de le décoder. l'utf-8, c'est bien mieux que tous ces iso à la con.


 
euh ok [:wam]
 
pq qd j'écris un document XML en UTF-8 avec un accents il me jette (que ce soit mozilla, IE ou autre)
 
qqun peut m'expliquer?


---------------
Just because you feel good does not make you right
n°494110
Taz
bisounours-codeur
Posté le 22-08-2003 à 10:09:38  profilanswer
 

il te jète comment?

n°494119
darklord
You're welcome
Posté le 22-08-2003 à 10:18:41  profilanswer
 

Taz a écrit :

il te jète comment?


 
w8 je fais un test ;)


---------------
Just because you feel good does not make you right
n°494121
darklord
You're welcome
Posté le 22-08-2003 à 10:21:21  profilanswer
 

Taz a écrit :

il te jète comment?


 
Mon test
 

Code :
  1. <?xml version="1.0" encoding="UTF-8" ?>
  2. <test>
  3.   <element type="accents">Coucou éèçà^$¨i¨</element>
  4.   <element type="normal">Hello World</element>
  5. </test>


 
mozilla ne me jette pas mais j'ai des caractères bizarres comme prévu ;)
 

Citation :


<test>
<element type="accents">Coucou ����^$�i�</element>
<element type="normal">Hello World</element>
</test>


 
 
IE
 

Citation :


An invalid character was found in text content. Error processing resource 'file:///C:/Documents and Settings/snicoll/Desktop/test.xml'. Line 3, Position 34  
 
  <element type="accents">Coucou  


Message édité par darklord le 22-08-2003 à 10:23:19

---------------
Just because you feel good does not make you right
mood
Publicité
Posté le 22-08-2003 à 10:21:21  profilanswer
 

n°494125
pilou50
Posté le 22-08-2003 à 10:24:32  profilanswer
 

benou a écrit :


ce que tu fais n'a pas de sens : une String en Java n'a pas de codage. C'est au moment où tu vas transformer ta Strig java en donnée binaire (écriture dans un fichier) que là c'est important d'utiliser le bon encodage.
 
mais l'opération que tu fais au dessus n'as pas sens ...
 


 
Merci, ton explication est claire.
Mais je veux écrire en utf8 sur la sortie standard (System.out) et aussi dans un fichier. Comment je peux faire?
 
Merci !

n°494130
Taz
bisounours-codeur
Posté le 22-08-2003 à 10:28:22  profilanswer
 

il te manque un " blaireau

n°494133
darklord
You're welcome
Posté le 22-08-2003 à 10:29:31  profilanswer
 

Taz a écrit :

il te manque un " blaireau  


 
le blaireau il t'emmerde pov type. Regarde mon edit déjà


Message édité par darklord le 22-08-2003 à 10:29:49

---------------
Just because you feel good does not make you right
n°494146
benou
Posté le 22-08-2003 à 10:38:48  profilanswer
 

pilou50 a écrit :


Merci, ton explication est claire.
Mais je veux écrire en utf8 sur la sortie standard (System.out) et aussi dans un fichier. Comment je peux faire?
Merci !


Code :
  1. OutptStream out = System.out;
  2. // ou bien  
  3. // OutptStream out = new FileOutputSream("toto.txt" );
  4. Writer outEncoder = new OutputStreamWriter(out, "UTF-8" );
  5. outEncoder.write("éàèô" ); // ce sera encodé en UTF-8
  6. ensuite il faut que tu ouvres ton fichier avec un éditeur capable de voir que c'est de l'UTF-8 ce qui n'est pas forcément évident.
  7. remarque : sur la sortie standard, tu veras certainement les caractères de façon bizare. Si t'es sous windows, l'encoding du shell dos est pas de l'utf-8 : c'est un encodage microsoft à la con. sous linux je sais pas :/


---------------
ma vie, mon oeuvre - HomePlayer
n°494149
benou
Posté le 22-08-2003 à 10:40:22  profilanswer
 

DarkLord a écrit :


pq qd j'écris un document XML en UTF-8 avec un accents il me jette (que ce soit mozilla, IE ou autre)
qqun peut m'expliquer?


surement parce que ton fichier n'est pas sauvegarder (au sens stockage binaire) en UTF-8 mais en ISO-machin-1 (qui est l'encodage par défaut des OS européens)


---------------
ma vie, mon oeuvre - HomePlayer
n°494153
darklord
You're welcome
Posté le 22-08-2003 à 10:41:13  profilanswer
 

benou a écrit :


surement parce que ton fichier n'est pas sauvegarder (au sens stockage binaire) en UTF-8 mais en ISO-machin-1 (qui est l'encodage par défaut des OS européens)


 
quel est l'intérêt de spécifier l'encodage alors. Tu peux me donner un lien ou qqch qui explique ca stp?


---------------
Just because you feel good does not make you right
n°494156
Taz
bisounours-codeur
Posté le 22-08-2003 à 10:42:07  profilanswer
 

DarkLord a écrit :


 
le blaireau il t'emmerde pov type. Regarde mon edit déjà

chez moi ça, marche, je viens de faire la manip avec word comme éditeur utf-8

n°494177
benou
Posté le 22-08-2003 à 10:51:18  profilanswer
 

DarkLord a écrit :


quel est l'intérêt de spécifier l'encodage alors. Tu peux me donner un lien ou qqch qui explique ca stp?


ben réfléchis plutot !
 
un fichier c'est un ensemble d'octets. les carctères normaux sont tous sauvegarder de la même façon. Par contre les carctères spéciaux peuvent avoir plusieurs codages binaires différents => un même codage binaire pourra avoir plsuieurs significations différente en fonction du charset dans lequel tu as choisit d'interpréter le fichir binaire.
 
Quand tu sauvegardes un fichier. Si celui-ci contient des car. spéciaux, le prog qui sauvegarde va les encoder dans un charset. Très souvent c'est le charset local => ISO-machin-1 en europe. Le problème c'est que dans un fichier texte, rien n'indique dans quel charset le fichier a été sauvegardé => un autre prog qui devra lire le fichier va le lire en fonction de son charset à lui. Si c'est le même tout se passe bien. Si c'est pas le même, on se retrouve avec des carré et des '?' à rire la rigo.
 
pour éviter ce problème des fichiers texte, en XML on indique l'encodage qui est utilisé => quand tu enregistres un fichier XML, tu utilises un certain charset et tu l'indique dans l'entête XML du fichier de façon à ce que les autres programmes qui le liront sauront quel charset utiliser pour le lire.
 
Bien sûr, si tu utilises un éditeur text pour lire ou écrire un fichier XML, rien ne t'assure que le charset que tu indiques dans l'entête XML soit le même que le charset utilisé par l'éditeur de texte pour lire/écrire le fichier. Par contre, les parsers et les éditeurs XML gèrent tous ce méchanisme (heureusement).
 
Vous remarquerez que l'entête d'un fichier XML ne contient pas de carctères spéciaux et c'est pour ca que les parsers peuvent commencer à lire le fichier sans connaître à l'avance le charset à utiliser. une fois qu'ils ont lu l'entête ils savent quel charset utiliser pour la lecture de la suite du document.
 
Donc dark, pour répondre à ta question : si ton doc XML ne lisait pas correctement sur un browser, c'est certainement parce que tu écrit charset="UTF-8" daans l'entête mais que tu as pas fait gaffe au charset utilisé pour sauvegarder ton document et qui était certainement l'ISO-machin-1 ...
 
capiché ?
 
edit : désolé pour les fautes, j'ai pas le courage de tout relire :o


Message édité par benou le 22-08-2003 à 10:52:09

---------------
ma vie, mon oeuvre - HomePlayer
n°494179
darklord
You're welcome
Posté le 22-08-2003 à 10:52:05  profilanswer
 

non mais je nie pas ce que vous dites hein. Vu que j'étais un peu perdu sur le sujet, je ne reste pas sur mes positions. Maintenant je voudrais bien qu'on m'explique pq les accents ne sont pas correctement affichés en utf8, stou :o


---------------
Just because you feel good does not make you right
n°494180
benou
Posté le 22-08-2003 à 10:52:30  profilanswer
 

DarkLord a écrit :

non mais je nie pas ce que vous dites hein. Vu que j'étais un peu perdu sur le sujet, je ne reste pas sur mes positions. Maintenant je voudrais bien qu'on m'explique pq les accents ne sont pas correctement affichés en utf8, stou :o


lis mon post :o
 
et là je les mérite mes points bourdail  !! :o :o


Message édité par benou le 22-08-2003 à 10:52:56

---------------
ma vie, mon oeuvre - HomePlayer
n°494182
darklord
You're welcome
Posté le 22-08-2003 à 10:53:43  profilanswer
 

benou a écrit :


capiché ?


 
[:prosterne] [:prosterne] [:prosterne] [:prosterne] [:prosterne] [:prosterne] [:prosterne] [:prosterne] [:prosterne] [:prosterne]


---------------
Just because you feel good does not make you right
n°494183
pilou50
Posté le 22-08-2003 à 10:53:49  profilanswer
 

benou a écrit :


Code :
  1. OutptStream out = System.out;
  2. // ou bien  
  3. // OutptStream out = new FileOutputSream("toto.txt" );
  4. Writer outEncoder = new OutputStreamWriter(out, "UTF-8" );
  5. ....




 
Je vais tester tout ça, je te tiens au courant.
Thx!
 
 

n°494184
darklord
You're welcome
Posté le 22-08-2003 à 10:54:03  profilanswer
 

benou a écrit :


lis mon post :o
 
et là je les mérite mes points bourdail  !! :o :o


 
j'ai posté presque en meme temps que toi :o


---------------
Just because you feel good does not make you right
n°494185
Taz
bisounours-codeur
Posté le 22-08-2003 à 10:54:36  profilanswer
 

Taz a écrit :

aussure toi que ton source est en UTF-8

[:quoted]
 
et je ne citerai pas benou
 
comme dit en suite, même éditer avec word ça marche

n°494186
benou
Posté le 22-08-2003 à 10:56:12  profilanswer
 


:)
 
je fais le malin parce que maintenant j'ai compris, mais moi aussi j'en ai chié pour comprendre le truc quand j'y ait été confronté (saloperie de téléphones portables qui gèrent que l'UTF-8 !!! :fou: )
 
en fait c'est tout con, mais j'avais jamais capté que un bête fichier text pouvait poser autant de problème : c'est bizarre que ce cas là soit pas aborder durant les études d'infos...


---------------
ma vie, mon oeuvre - HomePlayer
n°494191
Taz
bisounours-codeur
Posté le 22-08-2003 à 11:00:28  profilanswer
 

l'utf-8, c'est bien. et puis c'est compatible ascii.
sans utf-8, imagine le bordel si tu veux diffusé un document, ne serait-ce qu'en Europe :sweat:

n°494207
benou
Posté le 22-08-2003 à 11:09:30  profilanswer
 

Taz a écrit :

l'utf-8, c'est bien. et puis c'est compatible ascii.
sans utf-8, imagine le bordel si tu veux diffusé un document, ne serait-ce qu'en Europe :sweat:


c'est quoi cette remarque ???
 
en s'en fout de l'encodage. Le problème c'est qu'il y en a plusieurs ! si tout le monde se servait du même, quelqu'il soit, il y aurait aucun de problème !


---------------
ma vie, mon oeuvre - HomePlayer
n°494209
Krueger
tout salaire demande dutravail
Posté le 22-08-2003 à 11:10:57  profilanswer
 

En passant, j'ai les apostrophes en utf-8 qui deviennent des '?' en iso-8859-1, alors que c'est correctement converti vers du windows-1252. Quel est le problème ?


Message édité par Krueger le 22-08-2003 à 11:12:27

---------------
"Colère et intolérance sont les ennemis d'une bonne compréhension." Gandhi
n°494220
benou
Posté le 22-08-2003 à 11:15:07  profilanswer
 

surement que le codage des apostrophe en utf-8 et en windows-1252 est le même [:spamafote]


---------------
ma vie, mon oeuvre - HomePlayer
n°494247
Taz
bisounours-codeur
Posté le 22-08-2003 à 11:28:58  profilanswer
 

comme j'ai dit plus haut, l'utf-8 est compatible ascii, le reste n'est que pure coïncidence. les caractères utf-8 peuvent être multi-octets

n°494271
benou
Posté le 22-08-2003 à 11:48:14  profilanswer
 

Taz a écrit :

comme j'ai dit plus haut, l'utf-8 est compatible ascii, le reste n'est que pure coïncidence. les caractères utf-8 peuvent être multi-octets


et ???? tu réponds à qui là ?


---------------
ma vie, mon oeuvre - HomePlayer
n°494300
Taz
bisounours-codeur
Posté le 22-08-2003 à 12:07:51  profilanswer
 

benou a écrit :


et ???? tu réponds à qui là ?
 

bah au fait que les ' rendent pareil...

mood
Publicité
Posté le   profilanswer
 


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

  Question : pb accents en utf8

 

Sujets relatifs
Question sur l'ASP ?[Python] Question syntaxe Newbie
Question bizarre avec document.write...Petite question de débutant (priorités opératoires..)
[MYSQL] petite question sur la syntaxe des types de variables[VBA] Question à la con : Date du jour
[Newbie] Question sur ShowOpen[PHP] Petite question sur le "If"
question sur les css[Access/SQL] Quick Question sur les indexes
Plus de sujets relatifs à : Question : pb accents en utf8


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