taj*_*hal 7 java inputstream inputstreamreader
我试图从二进制流中读取数据,其中一部分应该被解析为UTF-8.
InputStream直接使用二进制数据并InputStreamReader在其上面使用UTF-8文本不起作用,因为读者将提前读取并弄乱后续二进制数据,即使它被告知读取最多n字符.
我认识到这个问题非常类似于从多种格式的InputStream读取,但是提出的解决方案特定于HTTP流,这对我没有帮助.
我想把所有东西都读成二进制数据,然后将相关的部分转换成文本.但我只有字符数据的长度信息,而不是字节.因此,我需要从流中读取字符的东西才能知道编码.
有没有办法告诉InputStreamReader不要读取比读取给定数量的字符所需的更多?或者是否有一个支持二进制数据和带编码的文本的阅读器,可以在这些模式之间切换?
您需要先阅读二进制部分。当您识别出需要 UTF-8 解码的字节部分时,您需要提取这些字节并对其进行解码。
DataInputStream dis =
// read a binary type.
int num = dis.readInt();
int len = dis.readUnsignedShort();
// read a UTF-8 portion.
byte[] bytes = new byte[len];
dis.readFully(bytes);
String text = new String(bytes, "UTF-8");
// read some binary
double d = dis.readDouble();
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
5514 次 |
| 最近记录: |