UTF8 byte []到字符串转换

pra*_*k03 6 c# string utf-8 type-conversion

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

Encoding.UTF8.GetString(byte[], int, int)这样做对我来说.它首先缩短1024字节,然后给我转换后的字符串.

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

有什么方法可以?让它不会被转换成字符串吗?

Lua*_*aan 6

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

Encoding.UTF8.GetDecoder().GetChars(buffer, 0, 1024, charBuffer, 0)
Run Code Online (Sandbox Code Playgroud)

当然,当代码点在中间分割时,Decoder在其状态中留下"部分字符",但在您的情况下这并不涉及您(并且在所有其他用例中都是可取的:)) .