gpt4 book ai didi

c# - 处理字节数组中的非 UTF-8 字符

转载 作者:太空宇宙 更新时间:2023-11-03 15:55:18 25 4
gpt4 key购买 nike

我有一个字节数组,其中包含一些不是 UTF-8 的字符。这些字符无法使用 UTF-8 编码进行反序列化。所以,我的问题是,如何处理这些字符并使字符串在任何语言下都可读。

例如,如果我有一个数组:

byte[] b = myArrayWithNonUTF8Characters;

然后我尝试反序列化数组:

DataContractJsonSerializer jsonSerializer = new DataContractJsonSerializer(typeof(MyObject));

MyObject objResponse = (MyObject)jsonSerializer.ReadObject(new MemoryStream(b));

然后我得到一个错误,该数组包含无效的 UTF8 字节

有什么方法可以让它工作吗?

PS:请不要给我这个答案:string s = System.Text.Encoding.UTF8.GetString(b, 0, b.Length);它只会返回替换非 UTF-8 字符的符号。

最佳答案

UTF 的美妙之处在于它可以对大多数语言的字符进行编码;这样您就可以在同一个字符流中包含希腊语和日语。

如果没有 UTF,您的整个流(或者在您的情况下是一个数组)必须使用代码页定义的单一语言。每个字符都由一个 ASCII 字节表示,但实际字符由代码页确定(有关详细信息,请参阅 http://en.wikipedia.org/wiki/Code_page)。

例如,如果您的文本是用希腊语编写的,您可以使用代码页 111:

System.Text.Encoding.GetEncoding(111)

简而言之,您需要知道 ASCII 文本是用什么语言编写的。

关于c# - 处理字节数组中的非 UTF-8 字符,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23918374/

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