Cliquez ici.
Accueil
 chercher             Plan du site             Info (English version) 
L'histoire de XML s'écrit en ce moment même. XMLfr vous aide à la suivre et à en dégager les tendances.Les listes de discussions XMLfr sont à votre disposition pour réagir sur nos articles ou simplement poser une question.Si vous ètes passionnée(e) par XML, pourquoi ne pas en faire votre métier ?XMLfr n'est heureusement pas le seul site où l'on parle de XML. Découvrez les autres grâce à XMLfr et à l'ODP.Les partenaires grâce auxquels XMLfr peut se développer.Pour tout savoir sur XMLfr.XMLfr sans fil, c'est possible !Pour ceux qui veulent vraiment en savoir plus sur XML.L'index du site.
 Commentaires et questions non techniques.Commentaires et questions techniques.

 
Cliquez ici.

xml tech : Technologies XML

[xml-tech] Re: RE : Re: RE : Re: RE : j'y perd mon latin iso-8859-1 [Uniquement Java]

[xml-tech] Re: RE : Re: RE : Re: RE : j'y perd mon latin iso-8859-1 [Uniquement Java]

Auteur: François Jannin <issar@free.fr>
Date: 11/01/2006 - 09:11

Merci beaucoup Erik ! Maintenant j'y vois enfin plus clair ! :) Je vais
faire les modifs nécessaires .

Cordialement,
François

Erik Mazoyer wrote:

>Pour travailler en Java avec les flux de caractères (en opposition avec les flux binaires),
>il faut utiliser les notions :
>Java.io.Reader
>Java.io.Writer
>
>URLEncoder et URLDecoder ne servent qu'a encoder des caractères au sein d'une URL, c'est-à-dire :
>
># The alphanumeric characters "a" through "z", "A" through "Z" and "0" through "9" remain the same.
># The special characters ".", "-", "*", and "_" remain the same.
># The space character " " is converted into a plus sign "+".
># All other characters are unsafe and are first converted into one or more bytes using some encoding scheme. Then each byte is represented by the 3-character string "%xy", where xy is the two-digit hexadecimal representation of the byte. The recommended encoding scheme to use is UTF-8. However, for compatibility reasons, if an encoding is not specified, then the default encoding of the platform is used.
>
>Bref, ça ne s'emploie pas en XML (sauf cas extremement rares, qui ne correspondent pas à ton cas).
>
>
>Si tu connais l'encodage de ton flux binaire en lecture :
>
>InputStream is = ...; // récéption du flux binaire
>Reader myReader = new InputStreamReader(is,"UTF-8");
>
>Maintenant toute lecture sur ton Reader se fera en décodant de l'UTF-8.
>Ce reader peut être la source d'une lecture XML.
>
>
>Pour l'écriture
>OutputStream os = new ...; // tu crées un flux binaire de sortie, a toi de déterminer ou tu écris, ça peut être un fichier, un flux reseau, etc.
>Writer myWriter = new OutputStreamWriter(os,"ISO-8859-1");
>
>Maintenant toute écriture sur ton Reader se fera en encodant en ISO Latin 1.
>Attention, si tu écris des caractères n'étant pas codés en ISO Latin 1, tu aura une erreur
>Ce reader peut être la cible d'une écriture XML.
>
>Enfin pour filtrer, afin d'écrire des entités pour les caractères non ISO Latin 1par exemple, il suffit d'écrire un FilterWriter
>
>Class isoLatin1Writer extends FilterWriter {
> public isoLatin1Writer(Writer out) {
> super(out);
> }
> public void write(int c) throws IOException {
> if(c<256) {
> super.write(c);
> } else {
> super.write("&#");
> super.write(Integer.toString(c));
> super.write(";");
> }
> }
> public void write(char[] cbuf,
> int off,
> int len) throws IOException {
> for(int i=0; i<len; i++) {
> write(cbuf[off+i]);
> }
> public void write(String str,
> int off,
> int len) throws IOException {
> for(int i=0; i<str.length(); i++) {
> write(str.charAt(off+i));
> }
>}
>J'ai écris la classe dans le mél je ne m'engage pas qu'il n'y ai pas d'erreur de frappe.
>Par contre pour la façon de faire, c'est sur :)
>
>Ensuite ton writer devient :
>Writer myWriter =
> new isoLatin1Writer (
> new OutputStreamWriter(os,"iso-8859-1")
> );
>
>Toute écriture pourra se faire en Unicode. Ton isoLatin1Writer enverra une entité &#...; à OutputStreamWriter pour tous les caractères au delà de 255. La compatibilité ISO Latin 1 est vérifiée.
>
>Résumé :
>
>
>2/ Mon deuxième est une appli java d'indexation qui récupère les données
>de mon premier en utf-8 et les indexe en iso-8859-1 (avec
>URLDecoder.decode(la chaine du serveur webdav, "utf8") : à ce moment
>précis je pensais tenir de l'iso-8859-1 (charset du système).
>
>Non, URLDecoder.decode ne sert pas à cela.
>Il faut écrire
>Reader myReader = new InputStreamReader(is,"UTF-8");
>Writer myWriter = new OutputStreamWriter(os,"ISO-8859-1");
>
>Il te faudra gérer les caractères Unicode non ISO Latin 1.
>Tu en fais quoi ?
>Pourquoi passer par un intermédiaire ISO Latin 1 alors que l'entrée et la sortie sont en Unicode ?
>
>3/ Mon troisième est une appli front-end cocoon/java qui récupère du xml
>iso-8859-1 de mon premier(resultat d'une recherche) et doit l'afficher
>en html utf-8 à travers une transfo XSLT + sérialisation HTML utf8.
>
>A priori, aucun problème en vue si tout est bien spécifié (je suis un enfant illegitime de Lapalisse).
>
>
>Cordialement,
>
>
>--------------------------------------------------------------------
>Erik Mazoyer, Chef de projet
>HyperOffice
>6, rue Jacques Daguerre - 92565 Rueil-Malmaison Cedex
>Tél. 01 41 96 96 76
>Fax 01 41 96 96 77
>Mél erik.mazoyer@hyperoffice.fr
>
>Nouveau cycle de séminaires "les mardis d'HyperOffice" Inscriptions et renseignements : http://www.hyperoffice.fr/formation/catalogue/index.asp
>
>
>-----Message d'origine-----
>De : François Jannin [mailto:issar@free.fr]
>Envoyé : mardi 10 janvier 2006 16:16
>À : xml-tech@xmlfr.org
>Objet : [xml-tech] Re: RE : Re: RE : j'y perd mon latin iso-8859-1
>
>
>Erik Mazoyer wrote:
>
>
>
>>>Ce n'est pas forcément vrai, personnellement j'utilise
>>>Encode (http://search.cpan.org/~dankogai/Encode-2.12/Encode.pm).
>>>
>>>
>>>
>>>
>>Quand je disait "facilement", je voulais dire normatif ou presque (par
>>exemple la reconnaissance par les premiers caractères n'est pas
>>"normative" mais se trouve décrite dans la norme "xml 1.0" et la norme
>>"xml 1.1").
>>
>>En java (je prêche pour ma paroisse) il est "simple" de poser un filtre
>>sur un Writer pour encoder "automatiquement" les entités.
>>
>>
>>
>>
>Je travaille en Java, ça tombe bien. Peux-tu donner un exemple ou un
>lien sur ces filtres de Writer ?
>J'ai l'impression que je me suis compliquée la vie avec
>l'URLEncoder/Decoder pour rien.
>
>Pour résumer ma problèmatique sous forme de rébus :
>
>1/ Mon premier est un serveur WEBDAV stockant des métadonnées en utf-8
>2/ Mon deuxième est une appli java d'indexation qui récupère les données
>de mon premier en utf-8 et les indexe en iso-8859-1 (avec
>URLDecoder.decode(la chaine du serveur webdav, "utf8") : à ce moment
>précis je pensais tenir de l'iso-8859-1 (charset du système)
>3/ Mon troisième est une appli front-end cocoon/java qui récupère du xml
>iso-8859-1 de mon premier(resultat d'une recherche) et doit l'afficher
>en html utf-8 à travers une transfo XSLT + sérialisation HTML utf8. 3/ Et mon tout donne un casse-tête chinois ressemblant à un générateur
>d'improbabilités :)
>
>Malgré moult tests j'obtiens soit des caractères bizarres par-ci ou des
>multi-byte error par-là. Par exemple, j'envoie une requête avec accents
>latin-1(eh oui ! du français !) url-encodée en utf-8 et impossible de
>l'utliser pour la recherche, même aprés avoir essayé toutes combinaisons
>d'encodage/décodage avec URLDecoder/Encoder.
>
>Merci mille fois de votre aide.
>Cordialement,
>François.
>
>
>--
>Devenez redacteur <XML>fr et contribuez au developpement du
>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
>Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
>
>Cette liste est a votre disposition pour discuter en francais de
>tout sujet technique lie a XML.
>
>Pour resilier votre abonnement, envoyez un message contenant
>la commande "unsubscribe" a xml-tech-request@xmlfr.org
>(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
>
>
>
>--
>Devenez redacteur <XML>fr et contribuez au developpement du
>xml francophone (http://xmlfr.org/infos/redacteurs/) !
>
>Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
>
>Cette liste est a votre disposition pour discuter en francais de
>tout sujet technique lie a XML.
>
>Pour resilier votre abonnement, envoyez un message contenant
>la commande "unsubscribe" a xml-tech-request@xmlfr.org
>(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
>
>
>
>
>

--
Devenez redacteur <XML>fr et contribuez au developpement du
xml francophone (http://xmlfr.org/infos/redacteurs/) !
Liste de diffusion "xml-tech@xmlfr.org" (http://xmlfr.org).
Cette liste est a votre disposition pour discuter en francais de 
tout sujet technique lie a XML.
Pour resilier votre abonnement, envoyez un message contenant 
la commande "unsubscribe" a xml-tech-request@xmlfr.org
(mailto:xml-tech-request@xmlfr.org?Subject=unsubscribe)
Received on Wed Jan 11 10:12:03 2006

Archive générée par hypermail 2.1.8 le 19/01/2006 - 11:42 UTC

webmaster@xmlfr.org

 

xml tech

Discussions techniques au sujet de XML.

Cette liste est à votre disposition pour discuter en français de tout sujet technique lié à XML.



Devenez rédacteur <XML>fr et contribuez au développement du xml francophone !
Les documents publiés sur ce site le sont sous licence "Open Content"
Conception graphique
  l.henriot@online.fr  

Conception, réalisation et hébergement