读取编码错误的文件。 CP1252与UTF-8

时间:2013-10-14 13:01:30

标签: java encoding utf-8 character-encoding nio

我有字节数组,它放入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 $解码器值。也许它解决了我的问题,但我不明白,我怎么解决它。

2 个答案:

答案 0 :(得分:2)

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

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

答案 1 :(得分:0)

我有完全相同的错误,最后通过将其添加到JVM启动选项来解决问题:

-Dfile.encoding=UTF8