gpt4 book ai didi

c# - 为什么 Xdocument 给我一个 utf16 声明?

转载 作者:IT王子 更新时间:2023-10-29 04:12:51 25 4
gpt4 key购买 nike

我正在创建这样的 XDocument:

XDocument doc = new XDocument(
new XDeclaration("1.0", "utf-8", "yes"));

当我像这样保存文档时 (doc.Save(@"c:\tijd\file2.xml");) ,我得到这个:

<?xml version="1.0" encoding="utf-8" standalone="yes"?>

没关系。

但是我想以xml的形式返回内容,我发现了下面的代码:

 var wr = new StringWriter(); 
doc.Save(wr);
string s = (wr.GetStringBuilder().ToString());

此代码有效,但字符串 's' 以此开头:

<?xml version="1.0" encoding="utf-16" standalone="yes"?>

所以它从 utf8 更改为 utf16,这不是我想要的,因为现在我无法在 Internet Explorer 中读取它。

有没有办法阻止这种行为?

最佳答案

StringWriter 宣传自己使用 UTF-16。虽然很容易修复:

public class Utf8StringWriter : StringWriter
{
public override Encoding Encoding { get { return Encoding.UTF8; } }
}

在您的特定情况下,这应该足够了。一个更全面的实现将:

  • 具有与 StringWriter 相匹配的构造器
  • 也允许在构造函数中指定编码

关于c# - 为什么 Xdocument 给我一个 utf16 声明?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5248400/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com