【发布时间】:2014-09-08 05:40:22
【问题描述】:
五年前在 coderanch 上发布了一个非常相似的问题,但没有得到任何答案:http://www.coderanch.com/t/463055/java-io/java/handle-charset-ProcessBuilder
这是我的代码:
new ProcessBuilder("/bin/bash", "-c", "echo тест | hexdump").start();
这是我所期待的:
0000000 d1 82 d0 b5 d1 81 d1 82
这是我在另一台 Linux 机器上得到的:
0000000 f2 e5 f1 f2
这是什么?如何解决?
【问题讨论】:
-
您在使用Apache Commons Exec时是否遇到同样的问题?
-
第一个是16位编码,另一个显然是8位。
locale命令在两台机器上打印什么? -
@GrzegorzŻur
locale在第一台机器上说LANG="en_US.UTF-8",在第二台机器上说LANG= -
似乎 Java 使用提供的语言环境正确编码了字符串。差异可能是由第二台机器上的非 unicode 语言环境设置引起的。如果您希望另一台机器使用相同的编码,请尝试设置 unicode 支持并将语言环境设置为 xx_YY.UTF-8。
标签: java linux unicode character-encoding