代码之家  ›  专栏  ›  技术社区  ›  A.Pissicat

无法使用XmlWriter编码为UTF8

  •  1
  • A.Pissicat  · 技术社区  · 7 年前

    我正在WCF中开发一个web服务。

    我想返回一个UTF8格式的xml文件。

    我的代码是:

    StringBuilder output = new StringBuilder();
    XmlWriterSettings settings = new XmlWriterSettings { Indent = true, Encoding = Encoding.UTF8 };
    using (XmlWriter writer = XmlWriter.Create(output, settings))
    {
        writer.WriteStartDocument();
        writer.WriteStartElement("Response", Resources.nameSpaceUri);
        /* Some functions */
        writer.WriteEndElement();
        writer.WriteEndDocument();
    }
    return output.ToString();
    

    但结果是:

    <?xml version="1.0" encoding="utf-16"?>
    <Response xmlns="http://namespace">
        <!-- Content -->
    </Response>
    

    为什么我的回答是UTF-16?

    1 回复  |  直到 7 年前
        1
  •  1
  •   Tom Blodget    7 年前

    这只是因为StringBuilder(和String,Char,Char)使用UTF-16。编写器适当地声明了编码。如果使用以文件或流为目标的写入程序,则它将使用设置中的编码。