gpt4 book ai didi

c# - 如何从字节数组中删除 BOM

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

我在 byte[] byteArray 中有 xml 数据,它可能包含也可能不包含 BOM。 C# 中是否有任何标准方法可以从中删除 BOM?如果不是,处理所有情况(包括所有类型的编码)的最佳方法是什么?

实际上,我正在修复代码中的错误,我不想更改太多代码。所以如果有人能给我去除BOM的代码就更好了。

我知道我可以找出 60 这是 '<' 的 ASCII 值并忽略之前的字节,但我不想那样做。

最佳答案

所有的 C# XML 解析器都会自动为您处理 BOM。我建议使用 XDocument - 在我看来,它提供了最清晰的 XML 数据抽象。

以XDocument为例:

using (var stream = new memoryStream(bytes))
{
var document = XDocument.Load(stream);
...
}

一旦你有了 XDocument,你就可以用它来省略没有 BOM 的字节:

using (var stream = new MemoryStream())
using (var writer = XmlWriter.Create(stream))
{
writer.Settings.Encoding = new UTF8Encoding(false);
document.WriteTo(writer);
var bytesWithoutBOM = stream.ToArray();
}

关于c# - 如何从字节数组中删除 BOM,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/15476113/

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