이 방법은 XML 파일을 작성합니다 (특정 작업). 필자는 UTF-8 (BOM 없음) 인코딩을 사용하여 파일을 작성하도록 설정 한 것을 제외하고는 필자가 원하는 모든 것을 정확히 작성했습니다.XmlWriter가 내가 설정 한 인코딩을 따르지 않는 이유는 무엇입니까?
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 대신 ANSI로 인코딩되어, UTF-8로 출력을 설정하면 그.
생각하십니까? 도움?
[C#에서 StringWriter를 사용하는 [XmlWriter 인코딩 UTF-8]의 가능한 복제본 (https://stackoverflow.com/questions/42583299/xmlwriter-encoding-utf-8-using-stringwriter-in-c-sharp) – MethodMan
You ['new UTF8Encoding (false)'] (https://msdn.microsoft.com/en-us/library/)을 사용하여 [BOM] (https://en.wikipedia.org/wiki/Byte_order_mark)을 생략하기로 결정했습니다. s064f8w2 (v = vs.110) .aspx). 어쩌면 XML 파일은 실제로 utf8로 인코딩되지만 메모장 ++는 누락 된 BOM으로 인해 잘못 추측하고 있습니까? 보충 유니 코드 비행기에서 한자 문자를 내보내려고하면 어떻게됩니까? 제대로 인코딩 되었습니까? 아니면 이스케이프 되었습니까? – dbc
실제로 관련이있는 github에서 [this] (https://github.com/adobe/brackets/issues/10583#issuecomment-168409391)를 발견했습니다. * 메모장 ++는 콘텐츠 인코딩을 알 수 없기 때문에 추측해야합니다. . ASCII 만 표시하므로 가장 낮은 공통 분모를 사용합니다 (기본적으로 Windows에서는 ASCII + 외국어 확장 (예 : Windows-1252)). * – dbc