如何解析二进制和ascii组合文件

时间:2013-08-20 09:26:41

标签: java file utf-8 binary hex

我的文件同时包含ASCII文本和二进制内容

当我将这些文件解析为UTF-8编码类型

ASCII类型的部分是可读的,但是二进制编码的部分无法读取..

并且整个长度都是正确的。因此该文件的编码类型为UTF-8。

但是如何通过java程序解析二进制编码部分?

2 个答案:

答案 0 :(得分:0)

您可以尝试读取1个字节并决定:   - 它是ASCII或UTF-8(如果比127更好,可能是UTF-8)   - 如果是ASCII而不是添加到String并重置状态。

如果可能是UTF-8: 阅读第二部分:下一个字节。 如果最后2个字节是UTF-8而不是添加到String并且状态重置 如果不是可接受的UTF-8字符,则最后2个是二进制数据:添加到数据队列。

处理下一个字节,直到文件结束。

在这种情况下,您将拥有所有可能的ASCII和所有可能的UTF-8字符以及剩余数据。

当readed字符在数据中时,可能就是这种情况,除非你有原始文件描述符,否则无法知道。就像是: 在位置1000处开始数据块直到.... pos 2000。 在位置2000开始,直到2500 ASCII字符串  等等。

我希望它有所帮助

答案 1 :(得分:0)

取决于

将文件读取为二进制文件,也可以作为ByteBuffer,因此字节序列可能会被选为字符串。

或者,如果您可以制作格式的语法,那也是可行的:在字节级别将关键字与String.getBytes("UTF-8")匹配。 StringTemplate如果你真的想在gramamr解决方案上付出努力。