为什么 XmlWriter 不遵守我设置的编码?
Why is XmlWriter not honoring the encoding I set?
此方法正在写出一个 XML 文件(特定于工作)。除了我将其设置为使用 UTF-8(无 BOM)编码写入文件外,我已经完全写出了我想要的所有内容。
XML 声明说是 UTF-8,但是当我在 Notepad++ 中打开文件时,它显示是用 ANSI 编码的。
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = new UTF8Encoding(false);
settings.NewLineOnAttributes = true;
using (var xmlWriter = XmlWriter.Create(@"c:\temp\myUIPB.xml", settings))
{
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("UIScript");
// Write Event Nodes
foreach (var eventNode in listBoxOutput.Items)
{
lbEvent myNode = (lbEvent)eventNode;
XmlNode xn = myNode.workflowEvent;
xn.WriteTo(xmlWriter);
}
xmlWriter.WriteFullEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Flush();
xmlWriter.Close();
}
我希望如果我将它设置为以 UTF-8 格式输出,那么写出的文件确实是用 UTF-8 编码而不是 ANSI 编码的。
想法?帮助?
使用不带 BOM 和 ascii 编码的 Utf8 文件如果只包含拉丁字符和数字,看起来是一样的。
通用文本编辑程序(如记事本、notepad++)将能够按照您喜欢的方式猜测编码(除非您提供一些提示,通常使用 "Open with encoding" 文件打开选项)。
兼容 XML 解析器使用 "xml" PI (<?xml version="1.0" encoding="UTF-8"?>
) 的 "encoding" 部分来检测没有 BOM 的文件的正确编码。在您的情况下,您可能会获得正确的 "xml" PI 并且兼容的 XML 解析器将正确打开它。
如果您需要所有程序都能正确检测 Utf8,请通过将 true
传递给编码构造函数来指定 BOM。
请注意,如果没有 BOM 文件,即使字符的代码超过 128,也可能会错误地检测到其编码。
此方法正在写出一个 XML 文件(特定于工作)。除了我将其设置为使用 UTF-8(无 BOM)编码写入文件外,我已经完全写出了我想要的所有内容。
XML 声明说是 UTF-8,但是当我在 Notepad++ 中打开文件时,它显示是用 ANSI 编码的。
XmlWriterSettings settings = new XmlWriterSettings();
settings.Indent = true;
settings.Encoding = new UTF8Encoding(false);
settings.NewLineOnAttributes = true;
using (var xmlWriter = XmlWriter.Create(@"c:\temp\myUIPB.xml", settings))
{
xmlWriter.WriteStartDocument();
xmlWriter.WriteStartElement("UIScript");
// Write Event Nodes
foreach (var eventNode in listBoxOutput.Items)
{
lbEvent myNode = (lbEvent)eventNode;
XmlNode xn = myNode.workflowEvent;
xn.WriteTo(xmlWriter);
}
xmlWriter.WriteFullEndElement();
xmlWriter.WriteEndDocument();
xmlWriter.Flush();
xmlWriter.Close();
}
我希望如果我将它设置为以 UTF-8 格式输出,那么写出的文件确实是用 UTF-8 编码而不是 ANSI 编码的。
想法?帮助?
使用不带 BOM 和 ascii 编码的 Utf8 文件如果只包含拉丁字符和数字,看起来是一样的。
通用文本编辑程序(如记事本、notepad++)将能够按照您喜欢的方式猜测编码(除非您提供一些提示,通常使用 "Open with encoding" 文件打开选项)。
兼容 XML 解析器使用 "xml" PI (<?xml version="1.0" encoding="UTF-8"?>
) 的 "encoding" 部分来检测没有 BOM 的文件的正确编码。在您的情况下,您可能会获得正确的 "xml" PI 并且兼容的 XML 解析器将正确打开它。
如果您需要所有程序都能正确检测 Utf8,请通过将 true
传递给编码构造函数来指定 BOM。
请注意,如果没有 BOM 文件,即使字符的代码超过 128,也可能会错误地检测到其编码。