CharsetDecoder不能在linux机器上运行

时间:2011-11-18 13:23:41

标签: java linux character decoder

以下在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机器解码器不解码字符串。

1 个答案:

答案 0 :(得分:3)

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

一点也不清楚你想要实现的目标,但如果你正在寻找特定于平台的行为的原因,那就是首先要考虑的事情。

哦,创建类似的PrintStream也会遇到同样的问题......请创建一个具有特定编码的OutputStreamWriter