CharsetDecoder不能在linux机器上工作

以下在linux机器上不起作用。

Charset charset = Charset.forName("UTF-8"); CharsetDecoder decoder = charset.newDecoder(); try { FileOutputStream fo = new FileOutputStream("hi.txt"); PrintStream ps = new PrintStream(fo); String msgBody = "ΣYMMETOXH"; ps.println(decoder.decode(ByteBuffer.wrap(decoder.decode(ByteBuffer.wrap(msgBody.getBytes())).toString().getBytes()))); ps.close(); fo.close(); } catch (CharacterCodingException e) { e.printStackTrace(); } 

此代码在Windows上工作。 可能是什么问题? 在Linux机器解码器不解码string。

问题在于你至少使用过一次String.getBytes() ,可能是两次(你的很长的一行很难阅读;使用几个语句会使它更容易理解)。 这没有指定编码,所以它会使用平台的默认编码。 在这一点上,你有一个平台依赖…因此,这个问题。

目前还不清楚你想要达到的目标,但是如果你正在寻找特定于平台的行为的原因,那么首先要看的就是这个。

哦,并创建一个像这样的PrintStream将有相同的问题…创建一个具有特定的编码OutputStreamWriter代替。