0

情報を格納する XML ファイルを作成したいと考えています。次のコードを使用しています。このファイルのエンコーディングをコードで指定する方法を知りたいです。

このファイルを別の形式で読み込もうとすると、日本語の文字が歪んでしまいます。

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);
4

2 に答える 2

3

Saveファイル名をパラメーターとして受け取るメソッドのオーバーロードを使用しています。このメソッドは、UTF-8 エンコーディングを使用します。ルートを作成する前に、xml 宣言を作成します。

// ...

XmlDeclaration documentType = writer.CreateXmlDeclaration("1.0", "utf-8", null);
writer.AppendChild(documentType);

XmlElement root = writer.CreateElement("PatientFile");
writer.AppendChild(root);

// ...

補足として、ファイルが作成されるエンコーディングを制御したい場合は、Saveメソッドの他のオーバーロードのいずれかを使用する必要があります。

于 2012-08-31T04:27:02.917 に答える
-1

以下を使用するようにコードを変更しましたが、動作します。

XmlDocument writer = new XmlDocument();
XmlDeclaration xmldecl;
xmldecl = writer.CreateXmlDeclaration("1.0", null, null);
xmldecl.Encoding = "UTF-8";
writer.AppendChild(xmldecl);
于 2012-08-31T04:38:19.883 に答える