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

  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  XMLDocument et caractère accentués

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

XMLDocument et caractère accentués

n°720657
Eugt
Posté le 10-05-2004 à 15:02:54  profilanswer
 

Bonjour,
 
J'aimerais ouvrir un fichier XML contenant des caractères accentués a l'aide d'un XMLDocument.
 

Code :
  1. XmlDocument doc = new XmlDocument() ;
  2. doc.Load(nomFicXML) ;


 
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 !

mood
Publicité
Posté le 10-05-2004 à 15:02:54  profilanswer
 

n°720701
Harkonnen
Modérateur
Un modo pour les bannir tous
Posté le 10-05-2004 à 15:23:10  profilanswer
 

c'est quoi que tu choppes comme exception ?

n°720705
HelloWorld
Salut tout le monde!
Posté le 10-05-2004 à 15:26:16  profilanswer
 

http://babel.alis.com/web_ml/xml/R [...] l#charsets
Tes caractères doivent être encodés en UNICODE.

n°720728
Eugt
Posté le 10-05-2004 à 15:47:11  profilanswer
 

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...


Message édité par Eugt le 10-05-2004 à 15:48:15
n°723228
pascal34
one point !
Posté le 12-05-2004 à 14:31:16  profilanswer
 

HelloWorld a écrit :


Tes caractères doivent être encodés en UNICODE.


 
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


Message édité par pascal34 le 12-05-2004 à 14:32:00
n°723278
gilou
Modérateur
Modosaurus Rex
Posté le 12-05-2004 à 14:47:37  profilanswer
 

HelloWorld a écrit :

http://babel.alis.com/web_ml/xml/R [...] l#charsets
Tes caractères doivent être encodés en UNICODE.

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+,


Message édité par gilou le 12-05-2004 à 14:48:43
n°723310
HelloWorld
Salut tout le monde!
Posté le 12-05-2004 à 14:59:18  profilanswer
 

:jap:
Je pensais que c'était la règle car le parser que j'utilisais encodait automatiquement mes accents, etc....

n°723391
gilou
Modérateur
Modosaurus Rex
Posté le 12-05-2004 à 15:32:15  profilanswer
 

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+,

n°723413
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-05-2004 à 15:39:42  profilanswer
 

pascal34 a écrit :


Enfin, ISO-8859-1 ou UTF-8 NE SONT PAS de l'Unicode


 
:heink: en quoi UTF-8 n'est pas de l'unicode ?


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°723489
gilou
Modérateur
Modosaurus Rex
Posté le 12-05-2004 à 16:18:38  profilanswer
 

Oui, va falloir aussi qu'on m'explique :D
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+,


Message édité par gilou le 12-05-2004 à 16:19:16
mood
Publicité
Posté le 12-05-2004 à 16:18:38  profilanswer
 

n°723517
pascal34
one point !
Posté le 12-05-2004 à 16:25:48  profilanswer
 

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 :

  • Si cet octet suivant à un bit de poids fort à 0, c'est fini et on a un caractère codé sur 14 bits mais dont les bits n'ont peut-être pas la même signification que ceux d'Unicode ! (là je ne sais pas)
  • Si cet octet suivant à un bit de poids fort à 1, on recommence jusqu'à tomber sur un octet avec un bit de poids fort à 0.


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)  :jap:


Message édité par pascal34 le 12-05-2004 à 16:28:58
n°723572
gilou
Modérateur
Modosaurus Rex
Posté le 12-05-2004 à 16:55:34  profilanswer
 

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+,


Message édité par gilou le 12-05-2004 à 16:59:57
n°723582
pascal34
one point !
Posté le 12-05-2004 à 16:58:03  profilanswer
 

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

n°723607
gilou
Modérateur
Modosaurus Rex
Posté le 12-05-2004 à 17:07:35  profilanswer
 

un manuel java n'est pas la meilleure reference pour Unicode. Je preferre celle ci: http://www.unicode.org/versions/Unicode4.0.1/
A+,

n°723617
pascal34
one point !
Posté le 12-05-2004 à 17:10:43  profilanswer
 

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/
A+,


 
C'est vrai que c'est plus complet

n°723761
antp
Super Administrateur
Champion des excuses bidons
Posté le 12-05-2004 à 18:04:14  profilanswer
 

pascal34 a écrit :


Et ainsi, les caractères comme é, è, ê, etc. sont codés sur 3 octets (en fait 21 bits) en UTF-8
 


 
:non: 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)


---------------
mes programmes ·· les voitures dans les films ·· apprenez à écrire
n°724211
pascal34
one point !
Posté le 13-05-2004 à 09:16:59  profilanswer
 

De toute façon j'ai tort  [:pascal34]


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  C#/.NET managed

  XMLDocument et caractère accentués

 

Sujets relatifs
comparaison de deux chaine de caracteretableau de chaine de caractere...
extraction d'une sous chaine de caractere ?[PERL] supprimer un caractere d'une chaine
[PHP] est il posible de rechercher le caractère * dans une chaine de ccaractère speciaux sous access
comment tester une chaine de caractèreCaractere d'echappement
Probleme de transfert de chaîne de caractere vers BDD.HELP!!!![VB6] Caractère de fin de ligne de fichier
Plus de sujets relatifs à : XMLDocument et caractère accentués


Copyright © 1997-2025 Groupe LDLC (Signaler un contenu illicite / Données personnelles)