【问题标题】:How to find Encoding of a file using Java [duplicate]如何使用Java查找文件的编码[重复]
【发布时间】:2020-01-18 13:11:40
【问题描述】:

我正在尝试使用 java 程序查找文件的编码。但它始终提供 UTF-8 作为输出。即使它是一个 ANSI 文件。

import java.io.InputStream 
import java.io.FileInputStream 
import java.io.BufferedInputStream 
import java.io.InputStreamReader 
new InputStreamReader(new FileInputStream("FILE_NAME")).getEncoding

库很旧,看起来没有适当的支持。 https://code.google.com/archive/p/juniversalchardet/

有些答案太多了,也就是说我们可以找到文件的编码,例如 Java : How to determine the correct charset encoding of a stream

这些解决方案看起来不太好。根据@Jörg W Mittag 我们无法确定文件的编码。

【问题讨论】:

  • 如果您还不知道文件的编码,就不可能找到它。例如,包含八位字节序列0xA4 0x0D 0x0A 的文件可能位于包含国际货币符号后跟 Windows 换行符的 ISO8859-1 中,或者位于包含欧元符号后跟 Windows 换行符的 ISO8859-15 中。包含八位字节序列 0x48 0x65 0x6C 0x6C 0x6F 的文件可以是 ASCII、UTF-8、UTF-7、ISO8859-1、ISO8859-15、Windows-1252 等格式的文本 Hello
  • 我不知道你能找到任何东西的编码。编码不是数据的一部分,而是如何处理数据。您可能想要尝试不同编码并提供真假的试金石
  • @JörgWMittag,那么为什么它们是声称的库,它们可以提供文件的编码。就像问题中提供的链接一样。
  • 很多人要求很多东西。这并不意味着它是真的。我给你举了两个无法找到编码的例子。
  • 询问文件的作者或给你的人。否则就是概率问题。文本文件适用于想要跟踪这些事情的专家。其他专家和非专家不会打扰任意文本文件。

标签: java scala encoding utf-8 ansi


【解决方案1】:

在 scala 中我不确定,但您是否尝试过 this lib?

public static Charset guessCharset2(File file) throws IOException {
    return CharsetToolkit.guessEncoding(file, 4096, StandardCharsets.UTF_8);
  }

【讨论】:

    猜你喜欢
    • 2011-03-23
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-08
    • 1970-01-01
    • 2011-07-12
    • 2013-11-14
    • 2015-07-06
    相关资源
    最近更新 更多