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