小编you*_*ang的帖子

Java:我如何从inputStream获取编码?

我想从流中获取编码.

第一种方法 - 使用InputStreamReader.

但它总是返回OS编码.

InputStreamReader reader = new InputStreamReader(new FileInputStream("aa.rar"));
System.out.println(reader.getEncoding());
Run Code Online (Sandbox Code Playgroud)

输出:GBK

第二种方法 - 使用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();
Run Code Online (Sandbox Code Playgroud)

输出:空

我怎样才能做对的?:(

java io encoding

10
推荐指数
1
解决办法
1万
查看次数

标签 统计

encoding ×1

io ×1

java ×1