• python的编码


    python的编码

    1、概述

    讲述编码,那么就要涉及到几个方面,包括系统中如何来显示字符,文件中如何来保存字符。

    1.1 系统环境

             在系统中显示字符,那么就必须要考虑到系统中使用的编码格式。

             在linux系统中,可以使用如下命令来进行查看系统当前的编码格式:

    [root@python pythonexample]# locale

    LANG=en_US.utf-8

    LC_CTYPE="en_US.utf-8"

    LC_NUMERIC="en_US.utf-8"

    LC_TIME="en_US.utf-8"

    LC_COLLATE="en_US.utf-8"

    LC_MONETARY="en_US.utf-8"

    LC_MESSAGES="en_US.utf-8"

    LC_PAPER="en_US.utf-8"

    LC_NAME="en_US.utf-8"

    LC_ADDRESS="en_US.utf-8"

    LC_TELEPHONE="en_US.utf-8"

    LC_MEASUREMENT="en_US.utf-8"

    LC_IDENTIFICATION="en_US.utf-8"

    LC_ALL=

             主要的环境变量就是LANG了,一般在linux系统中,设定了LANG,那么就设定了其他的变量,在如上的显示中为en_US.utf-8,en_US表示区域的选择,一般影响的为时间的显示,显示的格式为美国时间等其他影响,而utf-8则表示字符集环境,在这里使用的是utf-8编码。

             在linux系统中可以零时修改环境变量LANG的值,如下:

    [root@python pythonexample]# export LANG=zh_CN.utf-8

    [root@python pythonexample]# echo $LANG

    zh_CN.utf-8

             如果要永久生效,那么可以修改用户下的.profile文件,在其中加入上面的命令即可。

             在windows环境中一般的编码为gb2312,是默认编码,是不能修改的,特别是在命令行cmd中,采用的是gb2312编码。

    1.2 文件保存格式

             在文件进行保存的时候,可以选择编码格式来进行保存,一般保存的格式均为utf-8编码。

            

             在linux系统中,在vim中可以使用命令:setfileencoding=utf-8来进行保存,从而保存的格式为utf-8格式。在查看的文件保存的编码格式使用命令:set fileencoding即可看到文件的编码格式,也可以在家目录下创建文件.vimrc,在其中添加的内容如下:

    set encoding=utf-8 fileencodings=ucs-bom,utf-8,cp936

    从而在每次保存文件的时候,不用每次都输入命令来保存文件的格式。

             在windows中,如果使用的是notepad++,那么可以在设置里面进行设置,如下:

             如果要查看windows的文件的编码格式,那么在用记事本打开的时候,然后选择另存为,那么就可以看到原来的编码格式。

    1.3 如何显示

    unicode是一种字符集,包括所有的语言格式,而一般的字符串是ascll进行编码的,在python中通用的编码格式为utf-8,unicode可以看做是ascll码的父集合,从而unicode使包含ascll编码的。

    在读出文件的时候,根据文件的编码格式,对照字符集,然后显示出来,相当于一个加密的程序,对照密码本,然后进行解码,从而得到最后的结果。

    2. 在python中使用中文

             通用的格式为unicode编码,从而一般在中文前面都加上一个u,这个就是unicode编码的格式了。

             在使用中文的时候,必须在文件头进行声明为utf-8格式的编码,如下所示:

    [root@python pythonexample]# cat unicode.py

    #!/usr/bin/env python

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

    在上面中,使用了coding:utf-8来进行声明,使用的是utf-8进行编码,在保存的时候,也要保存为utf-8格式。

             另外,必须在中文前面添加一个u表示使用的是unicode字符集。

             在linux中使用print输出中文的时候,可以使用以下的方法:

    #!/usr/bin/env python

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

    print u"使用unicode编码" #直接输出为unicode编码,也是可以正确显示的

    print u"将unicode转变为uft-8编码".encode("utf-8") #转换为系统utf-8编码

             在windows中使用print输出中文的时候,可以使用:

    #!/usr/bin/python

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

    print u"中文".encode("gbk")

    print u"中文测试"

    从上面可以看出,主要是由于环境变量的不同,从而需要转换成操作系统默认的编码格式,才能够正确的进行显示,也就是unicode编码在linux中,必须转换成系统编码格式utf-8,在windows系统中,必须将unicode编码转换为系统编码格式gbk

    3、在raw_input中使用中文

    在raw_input中使用中文的方式必须如下所示(linux系统中):

    name = raw_input(u"中文".encode("utf-8"))

    print name

    必须将unicode的编码转变为系统编码,也就是必须转换成utf-8编码。

    在widows系统中如下所示:

    name = raw_input(u"中文输出".encode("gbk"))

    print name

    必须将unicode的编码转换为系统编码为gbk编码

    4、读写文件时使用中文

    linux:

    在写入文件的时候,将字符串转换为utf-8编码,然后进行写入;在读出文件的时候,可以转码为unicode,或者是直接输出,如下:

    logFile = open("kel.log","w")

    logFile.writelines(u"unicode编码转换成utf-8编码写入".encode("utf-8"))

    logFile.close()

    readFile = open("kel.log","r")

    for line in readFile:

        print line.decode("utf-8")

    readFile.close()

    windows:

    logFile = open("kel.log","w")

    logFile.writelines(u"unicode编码".encode("utf-8"))

    logFile.close()

    readFile = open("kel.log","r")

    for line in readFile:

        print line.decode("utf-8")

    readFile.close()

    从上可以看出,在windows或者是linux系统中,只要进行对应的编码和转码,即可进行正确的显示,不会出现乱码。主要是在进行输出的时候,都是可以直接输出为unicode编码,从而都可以进行转变为utf-8编码,然后在进行转换为unicode编码即可。

    5、编码转换

    encode 是将unicode编码方式转换为其他的编码

    decode 是将其他的编码方式转换为unicode编码

    for linux and python
  • 相关阅读:
    Google Protocol Buffer 的使用和原理(转)
    在python开发工具PyCharm中搭建QtPy环境(详细)
    Docker容器的操作
    Docker镜像操作
    最新版本Docker的安装和使用
    linux CentOS如何安装KVM
    在Linux CentOS下如何安装tar.gz和RPM软件包
    Linux忘记root密码后如何在grub界面中以单用户模式进入系统并重置密码的方法
    Django中的Project和App的区别
    Python处理PDF和Word文档常用的方法(二)
  • 原文地址:https://www.cnblogs.com/kellyseeme/p/5525070.html
Copyright © 2020-2023  润新知