Java: Как мне получить кодировку из inputStream?

Я хочу получить кодировку из потока.

1-й способ - использовать InputStreamReader.

Но он всегда возвращает код ОС.

InputStreamReader reader = new InputStreamReader(new FileInputStream("aa.rar"));
System.out.println(reader.getEncoding());

вывод: GBK

2-й способ - использовать UniversalDetector.

Но он всегда возвращает null.

    FileInputStream input = new FileInputStream("aa.rar");

    UniversalDetector detector = new UniversalDetector(null);
    byte[] buf = new byte[4096];

    int nread;
    while ((nread = input.read(buf)) > 0 && !detector.isDone()) {
        detector.handleData(buf, 0, nread);
    }

    // (3)
    detector.dataEnd();

    // (4)
    String encoding = detector.getDetectedCharset();

    if (encoding != null) {
        System.out.println("Detected encoding = " + encoding);
    } else {
        System.out.println("No encoding detected.");
    }

    // (5)
    detector.reset();

output: null

Как мне получить права? : (

10
задан Alex K 29 November 2011 в 07:56
поделиться