C# 创建xml文件时如何包含编码
我想创建一个XML文件来存储信息。我正在使用以下代码。我想知道如何在代码中指定此文件的编码 当我试图以另一种形式阅读此文件时,日语中的字符被扭曲了C# 创建xml文件时如何包含编码,c#,xml,C#,Xml,我想创建一个XML文件来存储信息。我正在使用以下代码。我想知道如何在代码中指定此文件的编码 当我试图以另一种形式阅读此文件时,日语中的字符被扭曲了 XmlDocument writer = new XmlDocument(); XmlElement root = writer.CreateElement("PatientFile"); writer.AppendChild(root); XmlElement ID = writer.CreateElement("ID"); if (!strin
XmlDocument writer = new XmlDocument();
XmlElement root = writer.CreateElement("PatientFile");
writer.AppendChild(root);
XmlElement ID = writer.CreateElement("ID");
if (!string.IsNullOrEmpty(_a2Data.CurrentRecordId))
{
ID.InnerText = _a2Data.CurrentRecordId;
}
root.AppendChild(ID);
XmlElement patientID = writer.CreateElement("PatientID");
if (!string.IsNullOrEmpty(_a2Data.PatId))
{
patientID.InnerText = _a2Data.PatId;
}
root.AppendChild(patientID);
XmlElement patientName = writer.CreateElement("PatientName");
if (!string.IsNullOrEmpty(_a2Data.PatName))
{
patientName.InnerText = _a2Data.PatName;
}
root.AppendChild(patientName);
XmlElement room = writer.CreateElement("Room");
if (!string.IsNullOrEmpty(_a2Data.RoomName))
{
room.InnerText = _a2Data.RoomName;
}
root.AppendChild(room);
string folderName = ConfigurationManager.AppSettings["PatientXMLFiles"];
if (!Directory.Exists(folderName))
Directory.CreateDirectory(folderName);
string fileName = ConfigurationManager.AppSettings["PatientXMLFiles"] + @"\" + _a2Data.CurrentRecordId + ".xml";
writer.Save(fileName);
您正在使用
Save
方法的重载,该方法将文件名作为参数。此方法使用UTF-8编码。在创建根目录之前创建xml声明:
// ...
XmlDeclaration documentType = writer.CreateXmlDeclaration("1.0", "utf-8", null);
writer.AppendChild(documentType);
XmlElement root = writer.CreateElement("PatientFile");
writer.AppendChild(root);
// ...
作为旁注,如果您想控制创建文件时使用的编码,则需要使用该方法的另一个重载。我将代码更改为使用以下代码,它可以正常工作
XmlDocument writer = new XmlDocument();
XmlDeclaration xmldecl;
xmldecl = writer.CreateXmlDeclaration("1.0", null, null);
xmldecl.Encoding = "UTF-8";
writer.AppendChild(xmldecl);
你能试试吗?请显示您的XML阅读代码,因为它很可能是问题所在。您所展示的代码没有什么特别的错误(您还可以安全地将所有示例剪切到3-4行)。