我創建用下面的代碼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();'的原因嗎? –