获取小盒子而不是实际角色

时间:2015-07-10 12:24:52

标签: java

我正在使用inputStream阅读流。代码在

之下
buffer = new byte[8];
try {
    while (inputStream.available() > 0) {
        int numBytes = inputStream.read(buffer);
        System.out.println(new String(buffer, 0, numBytes));
    }
} catch (Exception ex) {
    ex.printStackTrace();
}

但是我没有得到角色,而是在下面

enter image description here

这些是什么以及如何获得实际角色。

2 个答案:

答案 0 :(得分:4)

您需要为String构造函数提供适当的字符集参数。 (这是第四个参数 - 代码中缺少 - 并且数据的默认值是错误的。)

否则String会误解您的数据。

你可能会发现

java.nio.charset.Charset.forName("UTF-8")

是你需要的。

答案 1 :(得分:3)

你正在阅读字节并天真地翻译成字符串。这在一个简单的场景中起作用,但是字节组成了不同组合的字符。这称为字符编码,我怀疑你遇到了问题。此

至少,您需要确定要读取的文件的原始编码,并将此编码作为构造函数参数提供给String。这将告诉String如何将字节数组转换为字符数组(因此是字符串)

有关编码的详细信息,请参阅this document