【问题标题】:How can I parse the binary and ascii combination file如何解析二进制和 ascii 组合文件
【发布时间】:2013-08-22 07:05:24
【问题描述】:

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

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

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

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

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

【问题讨论】:

  • 您的问题根本不清楚...如果它是二进制的,您为什么要阅读它?如果它是二进制文件,你就不能(en.wikipedia.org/wiki/Binary_file)我不认为这是一个 utf8 问题。但也许我错了,请告诉我们更多关于你已经做了什么以及你想要什么

标签: java file utf-8 binary hex


【解决方案1】:

您可以尝试读取 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 字符串 等等。

希望对你有帮助

【讨论】:

    【解决方案2】:

    视情况而定。

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

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

    【讨论】:

    • 什么?哦,这是个好主意!
    • 我不知道!
    • 文件类型为UTF-8,一个数据长度为1024字节
    • 我只将该文件解析为 ASCII 类型的文件!!另一种选择是
    猜你喜欢
    • 2019-10-11
    • 1970-01-01
    • 2016-04-19
    • 2015-06-21
    • 1970-01-01
    • 2017-10-27
    • 1970-01-01
    • 2010-10-19
    • 2023-04-01
    相关资源
    最近更新 更多