hub*_*ber 3 c# encoding xml-serialization
我正在尝试在序列化对象时将编码类型设置为ISO-8859-1.代码运行时不会抛出任何异常,但返回的编码类型始终设置为"UTF-16".我搜索了很多例子,有100个样本,但我根本无法强制所需的编码类型.
我的问题是如何强制它将编码设置为ISO-8859-1?
提前致谢.
代码是:
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings
{
Indent = true,
OmitXmlDeclaration = false,
Encoding = Encoding.GetEncoding("ISO-8859-1")
};
using (var stringWriter = new StringWriter())
{
using (var xmlWriter = XmlWriter.Create(stringWriter, xmlWriterSettings))
{
serializer.Serialize(xmlWriter, obj, ns);
}
return stringWriter.ToString();
}
Run Code Online (Sandbox Code Playgroud)
Tho*_*que 11
当你写XML的TextWriter(例如StringWriter,StreamWriter),它总是使用由指定的编码TextWriter,并忽略指定的一个XmlWriterSettings.因为StringWriter,编码总是UTF-16,因为这是.NET字符串在内存中使用的编码.
解决方法是写入a MemoryStream并从那里读取字符串:
var encoding = Encoding.GetEncoding("ISO-8859-1");
XmlWriterSettings xmlWriterSettings = new XmlWriterSettings
{
Indent = true,
OmitXmlDeclaration = false,
Encoding = encoding
};
using (var stream = new MemoryStream())
{
using (var xmlWriter = XmlWriter.Create(stream, xmlWriterSettings))
{
serializer.Serialize(xmlWriter, obj, ns);
}
return encoding.GetString(stream.ToArray());
}
Run Code Online (Sandbox Code Playgroud)
请注意,如果您在字符串中包含XML,则在将其写入文件时,您需要确保使用相同的编码进行编写.
| 归档时间: |
|
| 查看次数: |
4930 次 |
| 最近记录: |