以下在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机器解码器不解码字符串。
答案 0 :(得分:3)
问题是你使用String.getBytes()
至少一次,可能两次(你的长线难以阅读;使用几个语句会更容易理解)。这没有指定编码,因此它将使用平台默认编码。那时,你有一个平台依赖...因此问题。
一点也不清楚你想要实现的目标,但如果你正在寻找特定于平台的行为的原因,那就是首先要考虑的事情。
哦,创建类似的PrintStream
也会遇到同样的问题......请创建一个具有特定编码的OutputStreamWriter
。