python中的编码转化问题

 大家都知道脚本语言中的编码问题都很恶心,最近在使用python,其中的编码问题困扰很久,网上查询了一点资料,做个小总结:

常见的编码集:

  • GB2312 是中国规定的汉字编码,也可以说是简体中文的字符集编码。
  • GBK 是 GB2312的扩展 ,除了兼容GB2312外,它还能显示繁体中文,还有日文的假名
  • cp936:中文本地系统是Windows中的cmd,默认codepage是CP936,cp936就是指系统里第936号编码格式,即GB2312的编码。(当然有其它编码格式:cp950 繁体中文、cp932 日语、cp1250 中欧语言。。。)
  • Unicode是国际组织制定的可以容纳世界上所有文字和符号的字符编码方案。UTF-8、UTF-16、UTF-32都是将数字转换到程序数据的编码方案。
    UTF-8 (8-bit Unicode Transformation Format)是最流行的一种对 Unicode 进行传播和存储的编码方式。它用不同的 bytes 来表示每一个代码点。ASCII 字符每个只需要用一个 byte ,与 ASCII 的编码是一样的。所以说 ASCII 是 UTF-8 的一个子集。

python代码中保存中文问题:

  • 1.python文件的编码问题,我们写的python文件说到底也是要用一种编码格式来进行保存,在python2中默认的保存编码方式是ASCII的,所以如果在Python文件中嵌套了中文,ASCII是无法对中文进行编码的,所以会出现错误。如何解决这个问题,其实很简单,改变默认的编码格式就行了,这也是我们在大多情况下写python2程序的时候习惯在程序的第一行加上:#coding=utf-8,那么如何修改Python2的系统编码为urf-8呢?
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
但是在python3中默认的编码方式是utf-8,这样保存中文格式是没有问题的。
  • 2.当然也可以用Unicode编码标注中文字符,u’中文’
  • 3.decode()与encode()
    decode (解码)的作用是将其他编码的字符串转换成 Unicode 编码,eg name.decode(“utf-8”),表示将utf-8编码的字符串name转换成Unicode编码。
    encode(编码) 的作用是将Unicode编码转换成其他编码的字符串,eg name.encode(“utf-8”),表示将unicode编码的字符串name转换成utf-8编码。
    s的编码格式为gbk,s.decode(‘gbk’).encode(‘utf8’)===>s解码gbk为Unicode,Unicode编码成utf-8。

猜你喜欢

转载自blog.csdn.net/wuxianweizai/article/details/78951065
今日推荐