我有无限大小的UTF8字节[](即非常大的大小).我想将其截断为1024字节,然后将其转换为字符串.
Encoding.UTF8.GetString(byte [],int,int)为我做了这个.它首先缩短1024个字节然后给我转换后的字符串.
但是在这个转换中,如果最后一个字符是UTF8字符集,它由2个字节组成,并且其第一个字节落在范围内而另一个字节超出范围则显示?转换后的字符串中的那个字符.
这有什么办法吗?不是用转换后的字符串?
这就是Decoder类的用途.它允许您将字节数据流式传输到char数据,同时保持足够的状态以正确处理部分
代码点:
Encoding.UTF8.GetDecoder().GetChars(buffer,1024,charBuffer,0)
当然,当代码点在中间分割时,Decoder在其状态下留下“部分字符”,但这与您的情况无关(并且在所有其他用例中都是可取的:) ).