我们知道,Charset可以从一个ByteBuffer中encode出字符串。
现在我从网络上读取一些字节到一个ByteBuffer,已知对方的编码方式是UTF-8。由于UTF-8是不定长编码,英文字母占1字节,汉字占3字节(好像),这样势必导致从网络上读取的时候,最后一个char可能只能读到一部分。例如,一句全是汉字的很长的句子,每个char都被编码成3位byte。而我的ByteBuffer容量是10,这样就只能读取3个完整的char和第4个char的一部分。把这个ByteBuffer用Charset解码,结果却得到了4个char,第4个char并不是一个汉字。也就是说,原文中的第4个char丢失了。
我的问题是,怎么应对这种情况?