java - CharsetDecoder 无法在 Linux 机器上工作

标签 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 机器上解码器不会解码字符串。

最佳答案

问题是您至少使用了 String.getBytes() 一次,可能两次(您的长行很难阅读;使用多个语句会使其更容易理解)。它没有指定编码,因此它将使用平台默认编码。到那时,您就产生了平台依赖性......因此出现了问题。

目前还不清楚您想要实现什么目标,但如果您正在寻找特定于平台的行为的原因,那么这是首先要考虑的事情。

哦,创建一个像这样的 PrintStream 也会有同样的问题...创建一个具有特定编码的 OutputStreamWriter

关于java - CharsetDecoder 无法在 Linux 机器上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8183093/

相关文章:

c - 替换字符串的单个字符元素 C

java - 对每个 API 调用进行身份验证

java - 按当前月份排序 List<Object> 到最近六个月

java - JDBC URL 中的空格

linux - 简单乘法函数中的推送/弹出段错误

linux - 从 awk 脚本获取 md5sum 哈希

java - 使用 Castor 进行编码和解码

linux - 如何在返回代码 0 时运行 bash 脚本?

Java 修剪字符和空格

c++ - 每个文件的末尾是否总是有一个换行符 (\n)?