在c#中将Xml UTF-8转换为ISO-8859-9

时间:2009-06-08 12:22:55

标签: c# xml utf-8

我有一个由字符串构建器创建的长xml文档,其中包含起始标记 <?xml version="1.0" encoding="UTF-8"?> <xxxxxx> .. </xxxxxx> 我想将此xml转换为iso-8859-9编码类型。 我怎样才能做到这一点? 或者任何人都建议我用另一种方法在C#中创建ISO-8859-9编码类型xml。

3 个答案:

答案 0 :(得分:5)

由于编码仅在将文本编码为流时才有意义,因此我假设您要使用给定的编码将文档保存到文件中。这样,encoding属性将匹配文件的编码。

尝试:

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);

答案 1 :(得分:3)

我建议最强大的方法是将其加载为XML文档,然后使用编码为ISO-8859-9的TextWriter保存它。这样您就不必担心任何特定于XML的内容。

您想要如何输出?在字符串,文件,字节数组?

答案 2 :(得分:0)

谢谢你的回答,这对我很有帮助。 除此之外,我注意到下面的示例代码。

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);

如果我只是更改Response的Charset属性 ContentEncoding响应属性, 我能找到你的解决方案吗? 我只会改变这两行:

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

有用吗?