0

我正在使用保存一个简单的 XDocument

xDoc.Save(result.Filename, SaveOptions.OmitDuplicateNamespaces);

当我们打开文件并在 Windows 系统(Server2008 或 Win7)上处理它时,xml 是正确的,并且可以在下一个系统中正确处理。

但是,当我们迁移到生产系统(unix)时,xml 无法正确读取。

当我们vi在 unix 框上生成文件时,有三个前导控制字符。正确删除这些和 xml 进程。

我在 Notepad++ 中看不到这些字符(将文件显示为 ANSI/UTF8)。

有谁知道这些字符是什么,它们是如何到达那里的……以及如何删除它们或阻止它们出现?

4

2 回答 2

2

您可以省略 Unicode BOM,只需传递new UTF8Encoding(false)给 save 方法。

像这样的东西(请把它当作伪代码):

using(var writer =  new StreamWriter(result.Filename, false, new UTF8Encoding(false))){
    xDoc.Save(writer , SaveOptions.OmitDuplicateNamespaces);
}
于 2012-06-06T11:41:29.570 回答
1

这是 Unicode BOM(字节顺序标记)。

如果它在 Linux 中显示,请获取支持 Unicode 的编辑器/查看器。

于 2012-06-06T11:30:14.670 回答