我有字节数组,将其放入InputStreamReader中并对其进行一些操作。

Reader reader = new InputStreamReader(new ByteArrayInputStream(byteArr));


JVM具有默认的cp1252编码,但是我翻译为字节数组的文件具有utf-8编码。此文件也有德国变音符号。当我将字节数组放入InputStreamReader中时,java会将变音符号解码为错误的符号。例如,ü表示为¼。我试图把“ UTF-8”和Charset.forName(“ UTF-8”)。newDecoder())放进去;到InputStreamReader构造函数,通过新的String(oldStr.getBytes(“ cp1252”),“ UTF-8)将字符串从阅读器转换为具有新编码的字符串;但这无济于事。在调试器中的阅读器变量中,我看到StreamDecoder参数,该参数具有“解码器”,其MS1252 $ Decoder值。也许可以解决我的问题,但我不知道如何解决。

最佳答案

尝试使用InputStreamReader(InputStream in, String charsetName)构造函数并自行设置字符集。

Reader reader = new InputStreamReader(new ByteArrayInputStream(byteArr), "UTF-8");

10-07 16:08