python学习之字符编码

字符分类及历史

ASCII

0-255 从数字到小写大写英文字母,加上一些特殊符号,常用的低字节(0-127)也是基本表,非常用的高字节(128-255)也是扩展表,8位为1字节,ASCII中每一个字符占一个字节

GB2312

中国1980年,为中文在计算机应用而制定的编码系统,一个字符占两个字节,中英文环境下兼容ASCII码,以连续两个高字节在一起就为中文字符

GBK

在GB2312的基础上扩展而来,一个字符占两个字节

unicode

unicode称之为万国码,包括各国语言字母及文字,与所有国家的编码有映射关系,2-4字节存一个字符是,在这当中一个中文字符占3个字符
其它编码转换为unicode为解码(decode),unicode转换为utf-8为编码(encode)

utf-8 union transfor format 可变长编码

为优化unicode存储空间过大的问题而出现了UTF-8
UTF-8用于文件存储和网络传输,但在内存中依然是unicode
mac、linux系统默认为utf-8,windows中国版系统默认为GBK

字符在python中的应用

python2中字符都以ASCII码解释存储

如GBK编码存储字符
python2代码涉及字符时,需要在第一行申明(如#coding:utf-8),其实就是告诉解释器这后面的代码是UTF-8编码写的,以UTF-8解释并存储,但因py2只支持ASCII码所以打印出来通常是乱码,需要转为unicode才能正常显示(str.decode("utf-8")以UTF-8转为unicode)

python3中字符在内存中以unicode存储,在文件中以utf-8存储

python3中代码以GBK编码,运行时解释器会以GBK编码转为unicode存在内存中

posted @ 2024-07-05 11:20  mink007  阅读(12)  评论(0编辑  收藏  举报