UTF8 byte []到字符串转换

时间:2016-04-20 09:12:53

标签: c# string utf-8 type-conversion

我有无限大小的UTF8 byte[](即非常大的)。我想将其截断为1024个字节,然后将其转换为字符串。

Encoding.UTF8.GetString(byte[], int, int)为我做了这件事。它首先缩短1024个字节,然后给我转换后的字符串。

但是在这个转换中,如果最后一个字符是UTF8字符集,由2个字节组成,其第一个字节在范围内而另一个字节超出范围,那么它在转换时显示该字符的?字符串。

有没有办法让这个?没有转换成字符串?

1 个答案:

答案 0 :(得分:6)

这就是Decoder类的用途。它允许您将byte数据流式传输到char数据,同时保持足够的状态以正确处理部分代码点:

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

当然,当代码点在中间分割时,Decoder在其状态中留下“部分字符”,但这与您的情况无关(并且在所有其他用例:))。