如果文件是Windows-1256,我真的很想得到。有没有办法识别文本文件是否是Java中的Windows-1256?
答案 0 :(得分:0)
您可以使用此API检查编码:
http://jchardet.sourceforge.net/
看看这个问题:
Java : How to determine the correct charset encoding of a stream
答案 1 :(得分:0)
为文件添加编码标头。许多文本编辑都这样做:
# -*- coding: cp1256 -*-
除此之外,没有可靠的方法来做到这一点。
问题是cp12xx编码彼此之间没有太大差别。他们在屏幕上看起来不同,但在文件的数据中,没有任何内容表示0x8a
表示阿拉伯语ٹ
(1256)或Š(1250和1252)或没有(1255)。
PS:由于从右到左的问题,最后一句看起来不对。代码“(1256)”实际上是在阿拉伯字符之后。
答案 2 :(得分:0)
假设您可以选择Windows-1256(阿拉伯语),UTF-8和Windows-1252(西欧的一部分)。然后,您可以注册错误编码的证据,例如UTF-8(不可见序列)和Windows-1252。 Windows-1252的某些序列无论如何都会为UTF-8抛出一个不可解决的例外 -
try {
readInUTF8(file);
} catch (IsWindows1256Exception e {
readInWindow1256(file);
}
(伪代码)