2 votes

Représentation XML non unicode

J'ai un fichier xml dont certaines valeurs d'éléments sont des caractères unicodes. Est-il possible de les représenter dans un encodage ANSI ?

Par exemple

<?xml version="1.0" encoding="utf-8"?>
<xml>
<value></value>
</xml>

à

<?xml version="1.0" encoding="Windows-1252"?>
<xml>
<value>&#27544;</value>
</xml>

Je désérialise le XML et tente ensuite de le sérialiser en utilisant XmlTextWriter en spécifiant l'encodage par défaut (Default est Windows-1252). Tous les caractères unicode se retrouvent sous forme de points d'interrogation. J'utilise VS 2008, C# 3.5.

5voto

Richard Nienaber Points 5049

J'ai testé avec le code suivant :

 string xml = "<?xml version=\"1.0\" encoding=\"utf-8\"?><xml><value>受</value></xml>";

 XmlWriterSettings settings = new XmlWriterSettings { Encoding = Encoding.Default };
 MemoryStream ms = new MemoryStream();
 using (XmlWriter writer = XmlTextWriter.Create(ms, settings))
      XElement.Parse(xml).WriteTo(writer);

 string value = Encoding.Default.GetString(ms.ToArray());

Et il a correctement échappé le caractère unicode ainsi :

<?xml version="1.0" encoding="Windows-1252"?><xml><value>&#x53D7;</value></xml>

Je dois faire quelque chose de mal ailleurs. Merci pour votre aide.

4voto

Blair Conrad Points 56195

Si je comprends bien la question, alors oui. Vous avez juste besoin d'un ; après la 27544 :

<?xml version="1.0" encoding="Windows-1252"?>
<xml>
<value>&#27544;</value>
</xml>

Ou bien vous demandez-vous comment générer ce XML par programme ? Dans ce cas, dans quel langage/environnement travaillez-vous ?

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X