ASCII是美国信息交换标准代码,是标准的单字节编码(8位)。unicode是计算机科学领域的业界标准,2字节(16位)。

  GBK称汉字内码扩展规范,双字节编码。UTF-8是针对unicode的可变长度编码,它支持所有国家语言。

  在python编写程序时,通常指定#conding=utf-8。但是若终端显示器支持的是GBK,为避免显示错误,需要编码转换。

          

  实际上,GBK和UTF-8都是以unicode为基础的,它们的关系如下:

       

  在用python编程过程中,若涉及到中文,且需要将中文代码由UTF-8转换成GBK时,具体操作如下:

  python2.7版本,转换过程为:UTF-8 —> Unicode —> GBK 。如下:

#coding=utf-8
name = '名字'    #这里是UTF-8
#先将转换UTF-8转换成unicode
name_unicode = name.decode('UTF-8')    #decode需要指明现在的类型
#再将unicode转换成GBK
name_GBK = name_unicode.encode('GBK')    #encode需要指明需要转换成的类型
#转换完成,在终端可以正常显示
print(name_GBK)

  python3.6版本,可直接将UTF-8转换成GBK。如下:

#coding=utf-8
name = '名字'    #这里是UTF-8
#直接将UTF-8转换成GBK
name_GBK = name.encode('GBK')    #encode需要指明需要转换成的类型
#转换完成,在终端可以正常显示
print(name_GBK)

  另外,Windows自带编码转换功能,可以自动将unicode转换成任何需要的编码形式。

  所以,在python2.7版本下,可以将UTF-8转换成unicode后,省略unicode转成GBK环节。如下:

#coding=utf-8
name = '名字'    #这里是UTF-8
#将UTF-8转换成unicode
name_unicode = name.decode('UTF-8')    #decode需要指明现在的类型
#省略UTF-8转码GBK环节,由Windows自动完成。
print(name_unicode)

  但是,如上做法在python3.6版本中会出现错误,因为python3之后的版本中移除了unicode类型、默认utf-8。慎用!