python之字符编码
字符编码
字符编码是什么
人与计算机交互时,使用的都是人类能够读懂的语言,而计算机只能理解0和1两个数字的组合,字符编码就是相当于将人类能够理解的语言翻译成计算机能够理解的数字。
字符编码的发展史
字符编码大概可以分为三个阶段。
-
阶段一:一家独大
计算机是由美国人,所以一开始只有他们的字符编码,只记录了英文字符和数字的对应关系,也就是ASCII码,用1bytes来表示一个英文字符。
记忆点:ASCII码中A-Z对应65-90,a-z对应97-122
-
阶段二:群雄割据
计算机传到其他国家后,其他国家使用计算机时发现ASCII对于有些语言来说不好使,于是各个国家发明了各自的字符编码。
中国发明的是GBK编码,用1bytes存储英文,2bytes存储中文。
-
阶段三:天下一统
由于各个国家各自的字符编码不同,不同国家之间在传输信息的时候就会出现乱码的情况,于是就发明了万国码(Unicode),但是它所有的字符都是2bytes起步存储,会浪费空间和输入输出时间。
字符编码实际应用
编码与解码
-
编码(encode)
将人类能够读懂的字符翻译成计算机能够读懂的字符
# 编码
print('我是帅比'.encode('gbk'))
# 输出结果:b'\xce\xd2\xca\xc7\xcb\xa7\xb1\xc8'
-
解码(decode)
将计算机能够读懂的字符翻译成人类能够读懂的字符
# 编码
res = '我是帅比'.encode('gbk')
# 解码
print(res.decode('gbk'))
# 输出结果:我是帅比
乱码问题
当一组数据用不同的字符编码进行编码解码时,就会出现乱码的情况。
# 编码
res = '我是帅比'.encode('utf8')
# 解码
print(res.decode('gbk'))
# 输出结果:鎴戞槸甯呮瘮
为了防止乱码的情况,我要用什么进行编码时就要用什么来进行解码。
python解释器层面
python2解释器默认的编码是ASCII码,所以为了python解释器可以识别中文和其他语言,我们在使用python2时一般会进行2个操作。
-
在代码的最上方添加一段注释
# coding:utf8 或者 # -*- coding:utf8 -*-
-
在定义字符串时习惯在前面加u
name = u'张三'