【发布时间】:2011-07-03 04:41:09
【问题描述】:
当使用 .net ASCIIEncoding 类将字节数组解码为字符串时,我是否需要编写一些代码来检测和删除字节顺序标记,或者是否可以告诉 ASCIIEncoding 不将字节顺序标记解码为字符串?
这是我的问题,当我这样做时:
string someString = System.Text.ASCIIEncoding.Default.GetString(someByteArray)
someString 将如下所示:
<?xml version="1.0"?>.......
然后当我这样称呼时:
XElement.Parse(someString)
由于前三个字节而引发异常:EF BB BF - UTF8 字节顺序标记。所以我想如果我指定UTF8编码,而不是Default,像这样:
System.Text.ASCIIEncoding.UTF8.GetString(someByteArray)
ASCIIEncoding 不会尝试将字节顺序标记解码为字符串。当我将返回的字符串复制到 notepad++ 中时,我可以看到一个 ? XML 标记前面的字符。所以现在字节顺序标记被解码为一个垃圾字符。在这种情况下,阻止字节顺序标记被解码的最佳方法是什么?
【问题讨论】:
-
someByteArray中是否有这些 EF BB BF 字符?它们不是 ASCII,以 7F 结尾。 -
我找到了一个很好的解释,包括一个可以选择正确编码并根据需要去除字节顺序标记的类,在这个站点:mobzystems.com/code/detecting-text-encoding.aspx
标签: .net utf-8 ascii byte-order-mark