1

我真的很想知道该文件是否为 Windows-1256。有没有办法识别文本文件是否是 Java 中的 Windows-1256?

4

3 回答 3

0

您可以使用此 API 来检查编码:

http://jchardet.sourceforge.net/

看看这个问题:

Java:如何确定流的正确字符集编码

于 2012-04-16T07:20:14.010 回答
0

将编码头添加到文件中。许多文本编辑器这样做:

# -*- coding: cp1256 -*-

除此之外,没有可靠的方法可以做到这一点。

问题是 cp12xx 编码彼此之间并没有太大的不同。它们在屏幕上看起来不同,但在文件数据中,没有任何内容表示0x8a阿拉伯语ٹ(1256)或Š(1250 和 1252)或什么都没有(1255)。

PS:由于从右到左的问题,最后一句话看起来不对。代码“(1256)”实际上是在阿拉伯字符之后。

于 2012-04-16T09:09:05.607 回答
0

假设您可以选择 Windows-1256(阿拉伯语)、UTF-8 和 Windows-1252(西欧的一部分)。然后,您可以为 UTF-8(不合理序列)和 Windows-1252 注册错误编码的证明。无论如何,某些 Windows-1252 序列会为 UTF-8 抛出无法解析的异常——

try {
    readInUTF8(file);
} catch (IsWindows1256Exception e {
    readInWindow1256(file);
}

(伪代码)

于 2012-04-16T09:30:09.947 回答