cocoon-users-fr mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From Sylvain Wallez <sylv...@apache.org>
Subject Re: eclaircisssements sur l'encoding?
Date Fri, 14 Apr 2006 10:03:48 GMT
philguillard wrote:
> Bonjour Jean Baptiste,
>
> Mon sujet quitte le giron cocoon puisque je me suis rendu compte que
> mon document a deja des problemes d'encodage avant de passer par
> cocoon (mod_mbox semble mal gerer les caracteres accentues en sortant
> une mbox(ASCII) en utf-8).
>
> Je n'ai finalement qu'une question qui concernera cocoon :
> Declarer l'encoding dans le serializer est-til une declarattion pour
> la future prise en compte du document (html) par example, ou
> correspond-t-elle a un vrai transformation(ce que je ne crois pas, car
> je crois l'encoding est qqchose a respecter et a ne pas perdre a
> chaque etape de la transformation de la data).
>
> Est-t-il possible de transformer l'encodage d'un document avec cocoon?
> (je crois c'est faisable en java dans certains cas en Java)

Quelques rappels sur l'encoding dans XML/Java:

En Java, les caractères (type char et String) utilisent 2 octets
réprésentant le caractère en UTF-16 [1]. Java ne peut donc théoriquement
pas représenter tous les caractères de l'Unicode, mais dans la pratique
tous les alphabets courants sont présents.

Pour le parser XML, le document texte est un flux binaire qu'il
convertit en charactères selon l'encodage spécifié par <?xml...?> (UTF-8
par défaut). A la sortie du parser, les événements SAX ou le DOM sont
donc des caractères au sens Java, et toute la chaîne de traitement se
déroule avec ces caractères.

Conséquences pratiques : on peut très bien transformer un document
encodé en ISO-8859-1 avec une XSL encodée en UTF-8. Le document et la
XSL sont lus par un parser et tout se retrouve en 'char' Java pour le
traitement.

La serialisation consiste à faire l'inverse du parser, c'est à dire de
convertir des événements SAX ou un DOM en une représentation binaire.
Celle-ci doit donc se faire suivant un encodage. C'est là qu'intervient
la configuration 'encoding' du serializer, et elle n'a aucun rapport et
n'est aucunement influencée par l'encodage d'origine des différents
documents qui ont participé à la constitution du document à sérialiser.

Dans ton cas, le problème semble venir du fait que le document XML est
"mal encodé", c'est à dire que l'encodage effectif n'est pas celui
déclaré dans l'entête (ou pas UTF-8) si ce n'est pas spécifié. Pour ce
genre de problème, il n'y a gère de solution à part de mettre un filtre
en entrée du parser pour remettre les choses d'aplomb (soit mettre le
bon encoding dans l'entête, soit réencoder correctement le flux binaire).

Sylvain

[1]
http://java.sun.com/docs/books/jls/third_edition/html/lexical.html#3.10.4

-- 
Sylvain Wallez
http://bluxte.net
Apache Software Foundation Member


---------------------------------------------------------------------
Liste francophone Apache Cocoon -- http://cocoon.apache.org/fr/
Pour vous desinscrire : mailto:users-fr-unsubscribe@cocoon.apache.org
Autres commandes : mailto:users-fr-help@cocoon.apache.org


Mime
View raw message