XMLDocument et caractère accentués - C#/.NET managed - Programmation
Marsh Posté le 10-05-2004 à 15:26:16
http://babel.alis.com/web_ml/xml/R [...] l#charsets
Tes caractères doivent être encodés en UNICODE.
Marsh Posté le 10-05-2004 à 15:47:11
ok, merci bcp...
Pour info, le é se code soit en & # 2 3 3 ; soit en & # x 0 0 E 9 ;
A+
edit : en enlevant les espaces...
Marsh Posté le 12-05-2004 à 14:31:16
HelloWorld a écrit : |
Pire que ça,
Si tu as des accents l'encoding du xml doit être ISO-8859-1
Si t'as pas d'accent, tu peux mettre UTF-8.
En fait tu peux normalement avoir des accent en UTF-8 car ce codage est universel. Seulement, il faut que l'éditeur (ou le programme qui génère le xml) écrive effectivement en UTF-8 (et c'est pas toujours le cas).
Enfin, ISO-8859-1 ou UTF-8 NE SONT PAS de l'Unicode
Marsh Posté le 12-05-2004 à 14:47:37
HelloWorld a écrit : http://babel.alis.com/web_ml/xml/R [...] l#charsets |
Non! Faudrait arreter de raconter n' importe quoi!
On peut dans du XML utiliser des caracteres dans n' importe quel codage a condition que
1) On indique le codage dans la declaration XML
2) Le parseur XML reconnaisse ce codage
3) Il n' y ait pas dans ce codage (ou plutot dans le document encode dans ce codage) de caracteres qui ne soit pas present dans la norme Unicode
Et si tu veux utiliser des é a la HTML, il suffit d' utiliser des declarations d'entites caracteres.
A+,
Marsh Posté le 12-05-2004 à 14:59:18
Je pensais que c'était la règle car le parser que j'utilisais encodait automatiquement mes accents, etc....
Marsh Posté le 12-05-2004 à 15:32:15
En interne au parseur, c'est de l'unicode (la spec XML est ainsi faite que si on veut une autre representation que de l'unicode en interne faut etre plus que super-maso) Mais en externe (le fichier/stream... lu/ecrit), ca essaye d'etre le plus permissif possible.
L'encodage doit etre indiqué dans la declaration XML, par exemple: <?xml encoding='UTF-8'?>, ou <?xml encoding='EUC-JP'?>, ...
Si il n'y a pas d'encodage declare, alors le document doit etre encode en unicode, et le parser se debrouille avec le debut du fichier (le <?xml ) pour determiner si on est en UTF-8, UTF-16LE ou UTF-16BE.
A+,
Marsh Posté le 12-05-2004 à 15:39:42
pascal34 a écrit : |
en quoi UTF-8 n'est pas de l'unicode ?
Marsh Posté le 12-05-2004 à 16:18:38
Oui, va falloir aussi qu'on m'explique
Parce que UTF-8 est un des encodages possibles de Unicode, au meme titre que UTF-16 ou UTF-32 ou d'autres.
Faudrait voir a pas confonfre codepoint et valeur d'encodage pour une representation particuliere.
Bon si on veut vraiment aller dans le trefond du detail, aucun encodage (pas meme UTF-16 ou UTF-32) n'est Unicode), mais certains encodages (dont UTF-8, 16, 32) peuvent encoder Unicode.
A+,
Marsh Posté le 12-05-2004 à 16:25:48
Sauf erreur de ma part,
Unicode = codage des caractères sur 16 bits
UTF-8 = codage multi-byte sur 7 bit de donné + 1 bit flag. Dans le premier octet, si le bit de poids fort est à 0 on a un caractère sur 7 bits sinon s'il est à 1 ça signifie qu'il y a un autre octet pour coder le caractère :
Et ainsi, les caractères comme é, è, ê, etc. sont codés sur 3 octets (en fait 21 bits) en UTF-8
CQFD (si je me trompe pas)
Marsh Posté le 12-05-2004 à 16:55:34
Ben tu te trompes:
> Unicode = codage des caractères sur 16 bits
Non. C'est pas sur 16 bits, c'est plus compliqué (par exemple avec l'utilsation des surrogates), et c'est pas un codage.
C'est un ensemble de caractere plus des tables de proprietes pour chaque caractere du jeu, et un ensemble d'algorithmes de tri. De plus pour certains caracteres composites, c'est une suite de code points (et plusieurs formes normalisées possibles)
Pour le codage lui meme, je te cite la norme:
Citation : Unicode provides for three encoding forms: a 32-bit form (UTF-32), a 16-bit form (UTF-16), and an 8-bit form (UTF-8). The 8-bit, byte-oriented form, UTF-8, has been designed for ease of use with existing ASCII-based systems. |
(en fait, avec les evolutions de la norme Unicode, on en est maintenant a 7 encodages specifies dans la norme Unicode: UTF-8 UTF-16, UTF-16BE, UTF-16LE, UTF-32, UTF-32BE, UTF-32LE)
Mais ce serait une erreur de considerer les code points comme etant le codage lui meme.
A+,
Marsh Posté le 12-05-2004 à 16:58:03
Ce que j'ai dit n'étant pas tout à fait juste, ce n'est pas tout à fait faux :
http://www.sniffer.net/bookshelf_d [...] ppb_01.htm
Marsh Posté le 12-05-2004 à 17:07:35
un manuel java n'est pas la meilleure reference pour Unicode. Je preferre celle ci: http://www.unicode.org/versions/Unicode4.0.1/
A+,
Marsh Posté le 12-05-2004 à 17:10:43
gilou a écrit : un manuel java n'est pas la meilleure reference pour Unicode. Je preferre celle ci: http://www.unicode.org/versions/Unicode4.0.1/ |
C'est vrai que c'est plus complet
Marsh Posté le 12-05-2004 à 18:04:14
pascal34 a écrit : |
ce genre de trucs c'est sur 2 octets
ceux qui sonr sur 3 octets ce sont certains caractères chinois ou asiatiques (ou autres alphabets bien spécifiques)
Marsh Posté le 10-05-2004 à 15:02:54
Bonjour,
J'aimerais ouvrir un fichier XML contenant des caractères accentués a l'aide d'un XMLDocument.
Il me lève une exception lors du Load() dès que je mets un caractère accentué dans le fichier XML que je veux charger.
Si j'enlève tous les caractères accentués du fichier XML, le Load() se passe correctement
Si je remplace mon é par un é j'ai toujours une exception.
L'un de vous aurait une petite idée ?
Merci bcp !