Rem*_*emy 31 .net c# xml .net-4.0 winforms
我用C#打开一个现有的XML文件,然后我替换那里的一些节点.一切正常.在我保存之后,我在文件的开头得到以下字符:
 (EF BB BF in HEX)
Run Code Online (Sandbox Code Playgroud)
整个第一行:
<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
Run Code Online (Sandbox Code Playgroud)
该文件的其余部分看起来像普通的XML文件.简化的代码在这里:
XmlDocument doc = new XmlDocument();
doc.Load(xmlSourceFile);
XmlNode translation = doc.SelectSingleNode("//trans-unit[@id='127']");
translation.InnerText = "testing";
doc.Save(xmlTranslatedFile);
Run Code Online (Sandbox Code Playgroud)
我正在使用.NET 4.0 的C#Windows窗体应用程序.
有任何想法吗?为什么会这样做?我们可以以某种方式禁用它吗?它适用于Adobe InCopy,它不会像这样打开它.
更新:替代解决方案:
使用XmlTextWriter保存它也可以:
XmlTextWriter writer = new XmlTextWriter(inCopyFilename, null);
doc.Save(writer);
Run Code Online (Sandbox Code Playgroud)
dal*_*lle 40
它是UTF-8 BOM,实际上不鼓励使用Unicode标准:
http://www.unicode.org/versions/Unicode5.0.0/ch02.pdf
对于UTF-8既不要求也不建议使用BOM,但在使用BOM的其他编码形式或将BOM用作UTF-8签名的UTF-8数据转换的上下文中可能会遇到
您可以使用以下方法禁用它
var sw = new IO.StreamWriter(path, new System.Text.UTF8Encoding(false));
doc.Save(sw);
sw.Close();
Run Code Online (Sandbox Code Playgroud)
归档时间: |
|
查看次数: |
34966 次 |
最近记录: |