1

我知道有很多关于这个的教程,甚至在这里回答了问题,但是我有几个小时试图解决的问题,我在这里阅读了几乎所有内容,但这对我来说仍然是个谜。请帮忙:

我正在创建 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?请帮忙...

4

1 回答 1

1

您的代码的结果是一个字符串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");
于 2013-09-06T23:21:38.783 回答