Bonjour,

voilà, on me fournit actuellement les XML en utf8 alors que mes pages sont encodé en iso-8859-1. Du coup je me retrouve avec les fragments XSLT encodés en utf8 et le reste du document en iso-8859-1...
Je voulais donc savoir si cela posait problème ? Si oui, est-il possible de modifier l'encodage de mes fichier XML de la norme utf8 à la norme iso-8859-1 ? Ce genre de problème doit être fréquent puisque de nombreux sont les logiciels (Excel, Indesign,...) qui ne peuvent pas exporter les XML en iso-8859-1. Comment a t-on l'habitude de le gérer pour le web ?
Modifié par mathmax (14 Feb 2006 - 12:05)
Slt,

si tu as Xslt tu peux toujours faire une copie 1:1 mais en changeant juste d'encodage (via la balise output).

a+
Bonsoir,

Je vais peut-être dire une chose bête, mais as-tu vérifier que tous les caractères de ton fichier ont une représentation en ISO-8859-1 ? Ce n'est jamais par hasard qu'on décide d'employé l'utf-8... et c'est vrai qu'il se généralise (tant mieux)

Sinon tu peux passer par des entités, si tu ajoute une déclaration d'entités au xml produit.
Modifié par hibou57 (09 Feb 2006 - 02:14)
mathmax a écrit :
... iso-8859-1. Comment a t-on l'habitude de le gérer pour le web ?

Alors sache tout d'abord que le norme XML impose l'encodage UTF-8 comme encodage par defaut des fichier XML, il est donc normal que la plus part des applications générant du XML favorise cet encodage
Smiley cligne

Ensuite, la plus part des parseur XSL sont capable de faire ce type de conversion à la volé.

Enfin, je n'en ai pas en tête, mais il existe nombre d'editeur qui sont capable d'effectuer ce genre de transformation (Personnelement, dans 95% des cas, j'utilise PHP plutot qu'un logiciel tiers pour gérer tout ça et il permet de faire ce type de conversion à la volé de manière très efficasse)

Smiley smile
Merci pour vos réponses, il y a cependant pas mal de chôses que je n'ai pas comprises.

a écrit :
as-tu vérifier que tous les caractères de ton fichier ont une représentation en ISO-8859-1 ?


comment ça ? Je pensais que les caractère comme € qui donne € sont justement des caractères ayant une représentation en ISO-8859-1. Je me trompe ?

a écrit :
Sinon tu peux passer par des entités, si tu ajoute une déclaration d'entités au xml produit.


C'est quoi les entités ?

a écrit :
Ensuite, la plus part des parseur XSL sont capable de faire ce type de conversion à la volé.


On m'a dis précédament que pour faire cette conversion, il fallait utiliser la balise output. En cherchant sur le web, j'ai trouvé qu'il falllait insérer cette balise <xsl:output method="html" encoding="ISO-8859-1" indent="no"/> dans mon doc xslt pour passer d'un encodage utf8 à un encodage ISO-8859-1. Ce qui m'étonne cependant est qu'on ne précise pas l'encodage de départ... Parlais-tu de celà quand tu disais conversion à la volé ?
Modifié par mathmax (09 Feb 2006 - 12:54)
mathmax a écrit :
Je pensais que les caractère comme &euro; qui donne &#8364; sont justement des caractères ayant une représentation en ISO-8859-1.

Et non, le signe euro n'existe pas avec l'encodage ISO-8859-1! Par contre, il existe dans l'encodage ISO-8859-15. Donc, comme tu le vois, il est très important de bien se documenter sur les différrent encodage que tu utilise !
Une petite aide :
> http://fr.wikipedia.org/wiki/ISO_8859-1
> http://www.lookuptables.com/

mathmax a écrit :
C'est quoi les entités ?

> http://en.wikipedia.org/wiki/HTML_entity
Smiley cligne

a écrit :
Ce qui m'étonne cependant est qu'on ne précise pas l'encodage de départ.

L'encodage de depart est celui du fichier XML qui est précisé dans la déclaration du fichier : <?xml version="1.0" encoding="UTF-8"?>

Si l'attribut encoding n'est pas présent, tous les parser considereront que le fichier XML est encodé en UTF-8
Smiley smile
Bonjour,

Ne mélangez pas les caractères saisis littéralement, les entités caractères et les entités numériques :
- le caractère saisi littéralement n'existe dans un jeu de caractères donné (ISO-8859-1 ou ISO-8859-15) que si celui-ci l'inclut. Pas de signe euro littéral en ISO-8859-1, par exemple, alors qu'une des raison d'être d'ISO-8859-15 est de l'admettre.
- l'entité caractère &euro; n'existe que dans le format/la DTD (HTML, XHTML, SVG) qui la définit. &euro; existe à la fois en ISO-8859-1 et en ISO-8859-15. En revanche, pas de &apos;en HTML4.01 : il n'est défini qu'en XHTML1.0.
- l'entité numérique adresse directement le caractère Unicode et existe dans tous les cas.

Relire http://www.la-grange.net/2002/10/23.html
Modifié par Laurent Denis (09 Feb 2006 - 14:50)
Merci pour ces précisions Laurent Denis. C'est effectivement là que je faisait une confusion.
Par contre une question que je me pose : pourquoi le signe &#8364; passe t-il bien si je le met directement dans ma page html alors que mon charset a la valeur : ISO-8859-1 ?

Je ne vois sinon toujours pas comment vérifier que tous les caractères de mon fichier ont une représentation en ISO-8859-1. Faut-il tous les vérifier un à un et regarder si ils figurent dans la liste des caractères compris dans le jeu ISO-8859-1 ?

Une autre question concernant l'encodage : en me documentant, j'ai lu que "l'unicode était généralement encodé en utf8". Ce qui m'étonne est que je pensais jusqu' à là que l'unicode était justement un encodage, alors encoder un encodage ça me parait bizarre... Smiley biggol Je ne dois pas avoir tout compris à ce qu'est l'unicode Smiley decu

Enfin, concernant la balise XSL output, c'est donc bien elle qui va définir mon encodage en sortie ? Que signifie alors : indent="no" ?
Slt,

si l'entitée &#8364; est bien résolue, c'est parceque c'est la norme XML qui le dit.

Sinon, quand tu enregistre ton fichier dans ton éditeur de texte, tu choisi l'encodage, en général c'est du iso-8859-1. Mais si tu configures ton programme pour qu'il enresgitre en utf-8, alors il enregistrera en utf-8 et la seule différence, invisible pour toi, sera au niveau des 010011010101010101 du fichier. Par contre si un programme essaye de lire du utf-8 comme de l'iso-8859-1, tu auras les problèmes que tu sais.

Pour ce qui est de l'unicoden en fait unicode est une norme qui en gros recense tous les caractères existant sur terre et attribut à chacun un numéro (ou point de code). De cette norme découle plusieurs encodages, l'utf-8 codant par défaut sur 1 octet étant le plus connu (mais il y a aussi l'utf-16 qui code par défaut sur 2 octets par exemple).

L'attribut indent de l'élément <output/> sert à préciser si le résultat doit être indenté... c'est tout !

Voici un programme Xslt qui devrait faire la conversion :
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="html" indent="yes" encoding="iso-8859-1" omit-xml-declaration="yes"/>

<xsl:template match="child::node()|attribute::*">
   <xsl:copy>
      <xsl:apply-templates select="child::node()|attribute::*"/>
   </xsl:copy>
</xsl:template>
<!-- ce qui te fait normalement une copie 1:1 du document de départ -->

</xsl:stylesheet>


a+
Merci pour précisions sur la conversion avec xslt. Smiley smile

Quelques questions que je me pose encore sur les encodages :

a écrit :
quand tu enregistre ton fichier dans ton éditeur de texte, tu choisi l'encodage, en général c'est du iso-8859-1.


Je n'ai pas ce choix d'encodage dans mon éditeur de texte. J'utilise notepad++ ou autre...
J'ai toujours cherché un programme ou editeur de texte qui puisse me convertir les textes dans les différents encodages...mais je n'ai jammais trouvé. Si tu as une adresse, ça m'interesse. Smiley cligne

a écrit :
Pour ce qui est de l'unicoden en fait unicode est une norme qui en gros recense tous les caractères existant sur terre et attribut à chacun un numéro (ou point de code).


Donc, si j'ai bien compris, l'unicode n'est pas un encodage, c'est juste une liste de caractères que les différents encodages doivent supporter. Les caractères de l'unicode ne sont pas forcément encodé en utf 8 ou 16 d'ailleurs, non ? Il peuvent aussi l'être en ASCII, en iso-8859-1,... ?
mathmax a écrit :
Je n'ai pas ce choix d'encodage dans mon éditeur de texte. J'utilise notepad++ ou autre...
J'ai toujours cherché un programme ou editeur de texte qui puisse me convertir les textes dans les différents encodages...mais je n'ai jammais trouvé. Si tu as une adresse, ça m'interesse.


Normalement, Notepad++ supporte l'ANSII et l'UTF-8 (en tout cas dans ses dernière version)

A l'heure actuelle, la quasi-totalité des éditeurs de text supporte au minimum l'ANSII et l'UTF-8 (même le notepad de Windows XP)... par exemple, j'utilise Notepad2 et Eclipse (deux extrème Smiley lol ) qui les supportes tous les deux.

Par contre, les editeurs capables de convertir un encodage vers un autre sans perte sont beaucoup plus rare ! D'ailleur il ne m'ne viens aucun en mémoire... mais si quelqu'un en a un sous le coude ... Smiley langue
Jep a écrit :

Par contre, les editeurs capables de convertir un encodage vers un autre sans perte sont beaucoup plus rare ! D'ailleur il ne m'ne viens aucun en mémoire... mais si quelqu'un en a un sous le coude ... Smiley langue


bluefish Smiley cligne

ceci dit il ne fait pas non plus le café : lorsqu'il s'agit d'un caractère UTF8
qui n'a pas d'équivalent en latin un il vous dit lequel et où,
il reste à le modifier à la main.

upload/4957-encodage.jpg

ici il s'agit de :
U+2019 RIGHT SINGLE QUOTATION MARK
...
this is the preferred character to use for apostrophe
Voir aussi : U+0027 APOSTROPHE

donc on remplace par une apostrophe simple.
Modifié par clansco (13 Feb 2006 - 10:21)
merci. Ca à l'air pas mal ce logiciel. Smiley smile J'ai télécharger un zip ici, mais dedans il n'y a pas de fichier .exe. Comment le lancer ?
Modifié par mathmax (14 Feb 2006 - 00:21)
Il n'y a pas de version Windows Smiley lol
Tu peux sinon utiliser l'éditeur jEdit qui passe d'un encodage à l'autre sans problèmes Smiley smile (ou tout du moins je n'en ai jamais rencontré ^^)
En ce qui me concerne, jedit me conviens parfaitement ! Smiley smile

Par contre je me pose toujours cette question sur l'unicode :
Est-ce que les caractères unicodes peuvent être encodés en autre chôse que de l'utf (8, 16 ou 32). Si oui, quels encodages ? L'iso-8859-1 n'en fait pas partie, non ?
Modifié par mathmax (14 Feb 2006 - 17:32)
clansco a écrit :


euh, plus exactement il faut avoir cygwin installé
xp screenshot
installation :
manuel

Smiley biggrin

Ou comment ouvrir une bouteille d'eau avec un marteau Smiley biggol

Il y a un tel pannel d'éditeurs de qualité sous Windows qu'il faut avoir un grain pour installer bluefish via cygwin Smiley sweatdrop