UTF8字节数组转换为字符串

6
我有一个UTF8的byte[],大小是无限的(即非常大)。我想将其截断为仅1024个字节,并将其转换为字符串。 Encoding.UTF8.GetString(byte[], int, int) 可以帮我实现。它首先缩短了1024个字节,然后给我转换后的字符串。
但在这个转换中,如果最后一个字符是UTF8字符集中的字符,该字符由两个字节组成,第一个字节落在范围内而另一个字节超出范围,则在转换后的字符串中会显示一个?
是否有任何方法可以使转换后的字符串中不出现这个?
1个回答

6

这就是Decoder类的作用。它允许您将byte数据流转换为char数据流,同时保持足够的状态以正确处理部分码点:

Encoding.UTF8.GetDecoder().GetChars(buffer, 0, 1024, charBuffer, 0)

当然,当代码点在中间被分割时,Decoder会留下一个“部分字符”的状态,但这并不涉及到你的情况(并且在所有其他用例中都是可取的 :))。

我不知道如何处理指针。能否提供任何帮助或者你的解决方案的替代方案吗? - pratik03
@pratik03 жІЎжңүжҢҮй’ҲеҸӮдёҺ - еҸӘйңҖдҪҝз”Ё char[]пјҲе’Ң byte[]пјүйҮҚиҪҪпјҢиҖҢдёҚжҳҜ char*пјҲе’Ң byte*пјүйҮҚиҪҪгҖӮ - Luaan

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接