文件以UTF16格式保存。可能是什么问题?

时间:2014-07-03 11:15:42

标签: c#

我正在尝试将xml字符串保存为文件,文件以UTF16格式保存。可能是什么问题?

private void SaveFile(string xmlData, string fileName)
{
    File.WriteAllText(fileName, xmlData, Encoding.UTF8);
}

尽管我已经提到Encoding为UTF8,但文件仍以UTF16格式保存。

1 个答案:

答案 0 :(得分:2)

我猜你做过类似的事情:

string xml;
using(var sw = new StringWriter()) {
    xmlSerializer.Serialize(sw, obj);
    xml = sw.ToString();
}

在这种情况下是的,xml将在内部声明utf-16,因为它已正确地确定它正在写入本质上为utf-16 的东西。有可能在编写器中解决这个问题(例如XmlWriterSettings.Encoding),但更好的方法是:

  • 直接写入/序列化到文件,例如通过StreamWriter到文件
  • 编写/序列化为MemoryStream而不是StringWriter,因为MemoryStream没有固有的utf-16编码

文件的编码与xml中声明的编码不完全相同;如果xml 作为字符串表示utf-16,那就不会因为你把字符串写成utf-8而神奇地改变