Java: Comment puis-je obtenir l'encodage de inputStream?

Je veux obtenir de l'encodage à partir d'un flux.

1ère méthode - utiliser le InputStreamReader.

Mais il y a toujours le retour de l'OS de l'encodage.

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

de sortie:GBK

2ème méthode - utiliser le UniversalDetector.

Mais il retourne toujours 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();

de sortie:null

Comment puis-je obtenir le droit? 🙁

source d'informationauteur youzhi.zhang