【问题标题】:Get File encoding ASCII or EBCDIC with java使用 java 获取文件编码 ASCII 或 EBCDIC
【发布时间】:2020-10-10 05:49:31
【问题描述】:

我有一个扩展名为 .b3c 的文件,我想知道它是使用 java jow 以 ASCII 还是 EBCDIC 编码的,请问可以实现吗?

需要帮助。

谢谢

【问题讨论】:

  • 对此没有 100% 的解决方案(除非您事先知道某些文件内容)。您将不得不使用一些启发式方法。
  • @Henry 你说的启发式是什么意思?
  • 下面提议的 Andreas 之类的。

标签: java file encoding ascii ebcdic


【解决方案1】:

假设文本文件包含多行文本,请检查 换行符 字符。

在 ASCII 中,行以 LF / \n / 0x0a 结尾。当然,在 Windows 上也有 CR,但我们可以忽略这部分。

在 EBCDIC 中,行以 NL / \025 / 0x15 结尾。

ASCII 文本文件将不包含 0x15 / NAK,EBCDIC 文本文件将不包含 0x0a / SMM,因此请同时查找:

  • 如果只找到其中​​一个,你就知道字符集了。

  • 如果两者都找到,则该文件是二进制文件,而不是文本文件,因此拒绝该文件。

  • 如果两者都没有找到,则文件可能只有一行文本,在这种情况下可能需要进一步分析。希望这里不会出现这种情况,所以到目前为止完成的简单测试就足够了。

【讨论】:

  • 你好@Andreas,那么我如何在 Java 8/11 中读取/识别这些字符?
  • 你好@Andres 我如何在我的java程序中识别这些字符?我尝试使用 BufferReader 读取文件,但我可以看到那些字符...
  • @Bizi 你不能使用BufferedReader,因为你还不知道字符集。您需要将文件作为二进制文件读取,即使用FileInputStream
猜你喜欢
  • 2015-06-23
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2010-10-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多