2008-09-17 10 views
2

J'ai un fichier XML dans lequel certaines valeurs d'éléments sont des caractères Unicode. Est-il possible de représenter cela dans un codage ANSI?Représentation XML non-unicode

E.g.

<?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érialiser le XML et ensuite tenter de sérialisation à l'aide XmlTextWriter spécifiant l'encodage par défaut (par défaut est Windows 1252). Tous les caractères Unicode finissent comme des points d'interrogation. J'utilise VS 2008, C# 3.5

Répondre

5

Ok je l'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 échappé correctement 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 l'aide.

4

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 vous demandez-vous comment générer ce code XML programme? Si oui, dans quelle langue/environnement travaillez-vous?

+0

C'était une faute de frappe de ma part. Corrigé l'exemple. –

Questions connexes