9

我已经正确定义了一个类,在将其序列化为 XML 之后,我没有得到任何编码。

如何定义编码“ISO-8859-1”?

这是一个示例代码

var xml = new XmlSerializer(typeof(Transacao));
var file = new FileStream(Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "transacao.xml"),FileMode.OpenOrCreate);            
xml.Serialize(file, transacao);            
file.Close();

这是生成的xml的开头

<?xml version="1.0"?>
<requisicao-transacao xmlns:xsd="http://www.w3.org/2001/XMLSchema" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  <dados-ec>
    <numero>1048664497</numero>
4

2 回答 2

23

以下应该有效:

var xml = new XmlSerializer(typeof(Transacao));

var fname = Path.Combine(AppDomain.CurrentDomain.BaseDirectory, "transacao.xml");
var appendMode = false;
var encoding = Encoding.GetEncoding("ISO-8859-1");

using(StreamWriter sw = new StreamWriter(fname, appendMode, encoding))
{
    xml.Serialize(sw, transacao);
}

如果您不介意我问,为什么您ISO-8859-1特别需要编码?您可能可以使用UTF-8UTF-16(它们更容易识别)并摆脱它。

于 2014-01-08T17:55:49.023 回答
0

使用所需的编码创建 StreamWriter:

System.Text.Encoding code = *WhateverYouWant*
StreamWriter sw = new StreamWriter(file, code);
于 2014-01-08T13:37:27.593 回答