0

我的文件既有 ASCII 文本又有二进制内容

当我将该文件解析为 UTF-8 编码类型时

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

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

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

4

2 回答 2

0

您可以尝试读取 1 个字节并决定: - 它是 ASCII 还是 UTF-8(如果大于 127,则可能是 UTF-8) - 如果是 ASCII,而不是添加到字符串和状态重置。

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

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

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

当读取的字符在数据中时可能会出现这种情况,除非您拥有原始文件描述符,否则无法知道。类似于:在位置 1000 开始一个数据块,直到.... pos 2000。在位置 2000 开始直到 2500 ASCII 字符串等等。

我希望它有帮助

于 2013-08-20T09:38:10.907 回答
0

要看。

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

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

于 2013-08-20T09:47:55.777 回答