2009-06-08 11 views
1

i ont un long document XML vient d'être créé par le constructeur de chaîne avec la balise de début comme <?xml version="1.0" encoding="UTF-8"?> <xxxxxx> .. </xxxxxx> et je veux convertir ce xml type d'encodage iso-8859-9 . Comment puis-je faire cela? Ou quelqu'un me suggère une autre façon de créer le type de codage ISO-8859-9 xml en C#.Conversion Xml UTF-8 à ISO-8859-9 en C#

Répondre

3

Je suggère que le moyen le plus robuste serait de le charger en tant que document XML, puis enregistrez-le avec un TextWriter qui a un encodage de ISO-8859-9. De cette façon, vous n'avez pas à vous soucier de quoi que ce soit de spécifique au XML.

Comment voulez-vous la sortie? Dans une chaîne, un fichier, un tableau d'octets?

5

Étant donné que le codage n'a de sens que lorsque le texte est codé dans un flux, je suppose que vous voulez enregistrer le document dans un fichier en utilisant le codage donné. De cette façon, l'attribut de codage correspondra au codage du fichier.

Essayez:

using System.IO; 
using System.Xml; 

XmlDocument doc = new XmlDocument(); 
doc.LoadXml(xml); 
Stream stream = File.Open(path, FileMode.Create, FileAccess.Write, FileShare.None); 
XmlWriterSettings settings = new XmlWriterSettings(); 
settings.Encoding = Encoding.GetEncoding("ISO-8859-9"); 
XmlWriter writer = XmlWriter.Create(stream, settings); 
doc.Save(writer); 
0

vous remercie de votre réponse, il est vraiment serviable pour moi. En plus de cela, j'ai remarqué que l'exemple de code ci-dessous.

string xml ="our created xml string"; 

HttpResponse Response = context.Response; 
Response.Clear(); 
Response.ClearContent(); 
Response.ClearHeaders(); 
Response.ContentType = "application/xls"; 
Response.Charset = "UTF-8"; 
Response.ContentEncoding = Encoding.GetEncoding("UTF-8"); 
Response.AddHeader("content-disposition", "attachment; filename=text.xml") ; 
Response.Output.Write(xml); 

si je change juste la propriété Charset de la réponse et ContentEncoding Propriété de réponse, Puis-je atteindre la solution? © ne changera ces deux lignes:

Response.Charset = "ISO-8859-9";           
Response.ContentEncoding = Encoding.GetEncoding("ISO-8859-9"); 

ça fonctionne?

+0

Cela fonctionnerait probablement. –