如何检测文本文件是否使用Windows-1256编码?

时间:2012-04-16 07:16:53

标签: java unicode character-encoding

如果文件是Windows-1256,我真的很想得到。有没有办法识别文本文件是否是Java中的Windows-1256?

3 个答案:

答案 0 :(得分:0)

答案 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);
}

(伪代码)