我创建用下面的代码XML文件(由Serialize()
返回的字节数组被写入FileStream
后):如何确保使用utf-8文件编码保存XDocument?
public byte[] Serialize()
{
using (var stream = new MemoryStream())
{
WriteXmlToStream(stream);
stream.Position = 0;
using (var reader = new StreamReader(stream))
{
string resultString = reader.ReadToEnd();
return Encoding.UTF8.GetBytes(resultString);
}
}
}
private void WriteXmlToStream(MemoryStream stream)
{
var document =
new XDocument(
new XElement("Coleta",
new XElement("Operador", Operador),
new XElement("Sujeito", Sujeito),
new XElement("Início", DataHora.ToString(Constantes.FormatoDataHora)),
new XElement("Descrição", Descrição),
// and so on
)
)
);
document.Save(stream);
}
但是当我打开保存文件时,Unicode字符“错误”:
<?xml version="1.0" encoding="utf-8"?>
<Coleta>
<Operador>Nome do Operador do Sofware</Operador>
<Sujeito>Nome Paciente de Teste</Sujeito>
<InÃcio>2015-05-19T02:24:10.10Z</InÃcio>
<Descrição>Coleta de teste para validação do formato de arquivo.</Descrição>
<Sensores>
<SensorInfo>
<Sensor>
<Nome />
<PosiçãoAnatômica>NãoEspecificada</PosiçãoAnatômica>
<Canais>
<Canal>
<!-- and so on -->
那我没有做,或者做错了,我应该怎么解决?我总是很难理解这些编码特性。
作为评价所提到的,它是因为文件编辑器都没有与正确的(UTF-8)编码打开所生成的文件。
所以我的问题是:我应该如何强制编码的文件?
更新:它看起来像这样的答案可能是相关的:
https://stackoverflow.com/a/3871822/401828
你是如何打开这个文件?这可能只是记事本是垃圾......确保你用UTF-8打开它。 –
我试过这个,它工作正常,所以我只能重新迭代Jon Skeet上面说的 - 你如何验证输出? –
重新'StreamReader()'等 - 任何你不能只使用'return stream.ToArray();'的原因吗? –