1

在我使用django的时候,我写了一个可以被http://myhost/XXX/testIndex调用的方法

def testIndex(request):
    res = os.system('java -jar test.HelloWorld' > /tmp/log)
    ... ...

HelloWorld java如下:

    public class HelloWorld {
    public static void main(String[] args) throws IOException {
        System.out.println("hello!");
        System.out.println("你好!");
}

当我访问 http://myhost/XXX/testIndex 时,结果是当我打开 /tmp/log 文件时,UTF-8 字符不正确!像这样

hello! ??!

发生了什么 ?顺便说一句,我在linux centOS下

4

1 回答 1

2

你有两个问题:

  1. 您在 Java 源代码中放置了非 ASCII 字符。这通常不是好的做法,因为您需要告诉 Java 编译器您对源文件使用了什么编码。如果是 UTF-8,请尝试:javac -encoding UTF-8 HelloWorld.java.

  2. System.out 的默认编码可能不是 UTF-8。如果您说出您使用的是哪个 JRE,这将有所帮助,因为不同的实现可能会略有不同。您可以使用 明确指定编码java -Dfile.encoding=UTF-8,但也不建议这样做。如果是 Sun 或 OpenJDK JRE,需要在 Java 启动前设置 LANG 环境变量;您可以在您的网络服务器配置中执行此操作,或者使用subprocess允许您指定传递给新进程的环境的 python 模块来执行此操作。

于 2012-12-27T11:52:55.187 回答