我有字节数组,它放入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 $解码器值。也许它解决了我的问题,但我不明白,我怎么解决它。
答案 0 :(得分:2)
尝试使用InputStreamReader(InputStream in, String charsetName)
构造函数并自行设置charset。
Reader reader = new InputStreamReader(new ByteArrayInputStream(byteArr), "UTF-8");
答案 1 :(得分:0)
我有完全相同的错误,最后通过将其添加到JVM启动选项来解决问题:
-Dfile.encoding=UTF8