首页 > 代码库 > 妈妈再也不担心我的编码问题了。中文编码融汇贯通,windows,django,python,java,html

妈妈再也不担心我的编码问题了。中文编码融汇贯通,windows,django,python,java,html

用django 写一个小web 应用。 该应用里调用的一个业务相关jar 包, 并把jar 包的返回值 显示出来。
就是在windows环境下,使用django框架,用python语言调用java 的jar包,输出内容到,html中。涉及了一堆的编码问题。
 过程中不是乱码,就是乱码。总算在高人指点下搞定。特此记录。
妈妈再也不担心我的编码问题了。

1. python 文件头 ,表示文件的内容使用的编码格式

# -*- coding: utf-8 -*-

2. python sys 的编码格式。

reload(sys)
sys.setdefaultencoding("utf8")

3. locale.getpreferredencoding()

4.  python可以打印出来标准输入和标准输出的编码格式。

    print sys.getdefaultencoding()
    print locale.getpreferredencoding()
    print sys.stdin.encoding
    print sys.stdout.encoding

5   python encode 把字符串编码成16进制数。  decode 解码成汉字

    msg = "刘这是一条流。量校准短信,为了让他长一点?abcdefg这。事为什么"
    print msg
    msg.encode(‘utf-8‘)
    cmd = "java -Dfile.encoding=utf-8 -jar jar/netflowcorrect-0.1-jar-with-dependencies.jar %s" % msg.encode(‘gbk‘)
    print cmd.decode(‘gbk‘).encode(‘utf8‘)

6 window 环境 命令行默认使用gbk  编码。  

使用utf8 把参数编码会被系统默认解码成gbk, 就乱码(可能只乱一小部分),但也是乱码。大部分时间都用来确认这个事情了。

7 java 命令 可以指定默认 字符编码

java -Dfile.encoding=utf-8 -jar jar/netflowcorrect-0.1-jar-with-dependencies.jar

8 java中打印字符编码

        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.setProperty("file.encoding", "Latin-1");
        System.out.println("file.encoding=" + System.getProperty("file.encoding"));
        System.out.println("Default Charset=" + Charset.defaultCharset());
        System.out.println("Default Charset in Use=" + getDefaultCharSet());
    private static String getDefaultCharSet() {
        OutputStreamWriter writer = new OutputStreamWriter(new ByteArrayOutputStream());
        String enc = writer.getEncoding();
        return enc;
    }

9 java中String  的编码转换

                log("输入2:"+new String(args[index].getBytes("gbk"),"gbk"));
                log("输入3:"+new String(args[index].getBytes("utf-8"),"gbk"));
                log("输入4:"+new String(args[index].getBytes("GB2312"),"gbk"));
                log("输入5:"+new String(args[index].getBytes("cp936"),"gbk"));
                log("输入6:"+new String(args[index].getBytes("ISO-8859-1"),"gbk"));

10 java 中System.out 指定编码


    private static void log(String msg) {
        try {
            PrintStream out = new PrintStream(System.out, true, "UTF-8");
            out.println(msg);
        } catch (UnsupportedEncodingException e) {
            e.printStackTrace();
        }
    }

11 html 文件指定编码

<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
</head>

妈妈再也不担心我的编码问题了。中文编码融汇贯通,windows,django,python,java,html