2011-07-06 60 views
2

我有一个字节流(由BufferedInputStream给出)表示一系列UTF-8字符串。该协议有点蹩脚,因为它在命令之间使用0xFF,这意味着整个流不是有效的UTF-8字符串,只有0xFF之间的部分是。将字节流转换为字符串(UTF-8编码)

如何提取这些UTF-8字符串。

我不认为BufferedReader会工作,因为0xFF会搞乱一切,我发现没有字节数组到UTF-8字符串转换函数。

回答

2

byte[] to String

所以会new String(bytes, "UTF-8");

您需要事先虽然过滤信息流。

+0

谢谢:-)顺便说一下,为了将Stream转换为byte [],我通过逐个读取字节来填充ArrayList ,然后将其转换为byte []。你认为有一个更简单的方法来做到这一点? (我不想做一些丑陋的事情,比如声明一个新的字节[1024],并希望输入不会超过1024字节) –

+0

您可以使用ByteBuffer http://download.oracle.com/javase/1 ,5.0/docs/api/java/nio/ByteBuffer.html –

+0

当ByteBuffer已满时,这似乎不会自动增长,所以我没有真正看到兴趣。我仍然必须宣布任意大小,并希望我的意见不是太大。 –