使用 UTF8 编码在 C# 中创建 XML
本文关键字:创建 XML UTF8 编码 使用 | 更新日期: 2023-09-27 18:30:38
我知道这里有很多关于这个的教程,甚至回答了问题,但我有问题,我试图解决几个小时,我在这里阅读了几乎所有内容,但这对我来说仍然是迷雾。请帮忙:
我正在创建XML,它已经创建,但问题是编码是UTF-16,它应该是UTF-8。这是我到目前为止尝试的,但仍然是 UTF-16:
var xmlText = new StringBuilder();
using (var xml = XmlWriter.Create(xmlText))
{
xml.WriteStartDocument();
xml.WriteStartElement("Weather");
if (model.ModuleList[0] != null)
{
foreach (var weather in model.ModuleList)
{
var AddProperty = new Action<XmlWriter, ModuleModel>((a, forc) =>
{
xml.WriteStartElement("Forecast");
a.WriteElementString("Description", forc.Description);
a.WriteElementString("Date", forc.Date.ToString());
a.WriteElementString("MinTemp", forc.Min_Temp.ToString());
a.WriteElementString("MaxTemp", forc.Max_Temp.ToString());
a.WriteElementString("Pressure", forc.Pressure.ToString());
a.WriteElementString("Humidity", forc.Humidity.ToString());
xml.WriteEndElement();
});
AddProperty(xml, weather);
}
}
xml.WriteEndElement();
xml.WriteEndDocument();
}
var xmlresult = xmlText.ToString();
如何将我的 XML 编码设置为 UTF-8?请帮忙...
代码的结果是一个字符串xmlresult
- 字符串没有编码,它们始终是 Unicode。
当您将字符串转换为字节序列时,您使用编码 - 因此您的问题不在于您发布的代码段,而在于您用于将该字符串写入文件的代码。
像这样:
using (StreamWriter writer = new StreamWriter(fileName, true, Encoding.UTF8))
{
writer.Write(xmlresult);
}
将写入一个 UTF-8 文件 - 其中filename
包含文件的路径。
如果内存中需要 UTF-8 编码字节,请使用:
var utf8Bytes = Encoding.UTF8.GetBytes("xmlresult");