django调用java时,为什么utf-8字符输出不正常?
当我使用django时,我编写了一个可以由http://myhost/XXX/testIndex调用的方法django调用java时,为什么utf-8字符输出不正常?,java,python,linux,encoding,Java,Python,Linux,Encoding,当我使用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) th
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下您有两个问题:
javac-编码UTF-8helloworld.java
java-Dfile.encoding=UTF-8
显式指定编码,尽管这也是一个问题。如果是Sun或OpenJDK JRE,则需要在Java启动之前设置LANG环境变量;您可以在Web服务器配置中执行此操作,也可以使用子流程
python模块,该模块允许您指定传递给新流程的环境是什么让您认为这会将UTF8字符写入文件?你没有在任何地方设置任何编码。当我使用shell时,一切都正常,我的所有环境都设置为UTF-8,我的linux语言环境,我的所有python和java文件,python文件的注释为#coding:UTF-8,我应该将编码正确地放在哪里1。我的环境变量LANG已设置为zh_CN.UTF-8 2。javac编码UTF-8没有帮助,如果我不在java源代码中输入非ASCII字符,而不是读取UTF-8编码的文件,然后打印它们,它也不工作,为什么?另一个关键点是它在shell中工作,在drango serviceOk中是错误的,所以您消除了问题1,而不是问题2。很可能在Web服务器环境中未设置LANG。