gpt4 book ai didi

c# - Encoding.UTF8.GetBytes 和 UTF8Encoding.Default.GetBytes 之间的区别

转载 作者:太空狗 更新时间:2023-10-29 17:40:21 25 4
gpt4 key购买 nike

谁能解释一下赌注的区别是什么。 Encoding.UTF8.GetBytes 和 UTF8Encoding.Default.GetBytes?实际上,我正在尝试将 XML 字符串转换为流对象,现在发生的情况是每当我使用这一行时:

  MemoryStream stream = new MemoryStream(UTF8Encoding.Default.GetBytes(xml));

它给我一个错误“System.Xml.XmlException:给定编码中的无效字符”

但是当我使用这条线时它工作正常:

  **MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml));**

尽管在这两种情况下它似乎都是 UTF8 编码,但如何一种有效而另一种无效?

最佳答案

没有 UTF8Encoding.Default 属性。当你写这个的时候,你实际上是在返回基类静态属性,Encoding.Default ,它不是 UTF8(它是系统默认的 ANSI 代码页编码)。

因此,两者将返回非常不同的结果 - 因为 UTF8Encoding.Default 实际上是 Encoding.Default,您将返回相同的结果,就像您使用 ASCIIEncoding.Default 或任何其他 System.Text.Encoding 子类。

使用 UTF8Encoding 的正确方法是使用您创建的实例,例如:

MemoryStream stream = new MemoryStream((new UTF8Encoding()).GetBytes(xml));

以上应该提供与以下相同的结果:

MemoryStream stream = new MemoryStream(Encoding.UTF8.GetBytes(xml));

关于c# - Encoding.UTF8.GetBytes 和 UTF8Encoding.Default.GetBytes 之间的区别,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16994042/

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