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

时间:2012-06-06 11:25:50

标签: c# linq-to-xml control-characters

我正在使用

保存一个简单的XDocument

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

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

然而,当我们转移到我们的生产系统(unix)时,xml无法正确读取。

当我们vi unix框上的结果文件时,有三个主要控制字符。正确删除这些和xml进程。

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

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

2 个答案:

答案 0 :(得分:2)

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

这样的事情(请将其视为伪代码):

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

答案 1 :(得分:1)

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

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