【发布时间】: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