控制出现在 XDocument.Save() 中的字符,但仅对 Unix 可见

本文关键字:字符 可见 Unix XDocument Save 控制 | 更新日期: 2023-09-27 18:36:20

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

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

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

无论如何,当我们移动到生产系统(unix)时,xml无法正确读取。

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

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

有没有人知道这些角色是什么,他们是如何到达那里的......以及如何删除它们或阻止它们出现?

控制出现在 XDocument.Save() 中的字符,但仅对 Unix 可见

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

像这样的东西(请将其视为伪代码):

using(var writer =  new StreamWriter(result.Filename, false, new UTF8Encoding(false))){
    xDoc.Save(writer , SaveOptions.OmitDuplicateNamespaces);
}

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

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