03_Python字符编码_全栈开发学习笔记

2018-10-09  本文已影响0人  豆行僧

1. Python2 and Python3

00000001:8 bit = 1 byte(一个字节)

ascii
英: 00000010 8位 一个字节

unicode
英:00000000 00000001 00000010 00000100 32位 四个字节 表示一个字符
中:00000000 00000001 00000010 00000110 32位 四个字节 表示一个字符

utf-8
英: 00100000 8位 一个字节
中: 00000001 00000010 00000110 24位 三个字节
欧洲:16位 两个字节 表示一个字符
亚洲:24位 三个字节 表示一个字符

gbk
英: 00000110 8位 一个字节
中: 00000010 00000110 16位 两个字节
亚洲:16位 两个字节 表示一个字符

1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(只能是utf-8,utf-16,gbk,gb2312,ascii等等)


2. Python3

str 在内存中是用unicode编码。

bytes类型(utf-8,utf-16,gbk,gb2312,ascii等等)
对于英文:
str:表现形式:s = 'alex'
  编码方式:010101010 unicode
bytes:表现形式:s = b'alex'
  编码方式:000101010 utf-8 gbk。。。。
对于中文:
str:表现形式:s = '中国'
  编码方式: 010101010 unicode
bytes:表现形式:s = b'x\e91\e91\e01\e21\e31\e32'
  编码方式:000101010 utf-8 gbk。。。。

范例:encode 编码,如何将str(unicode) --> bytes(utf-8或GBK)

s1 = 'alex'
s11 = s1.encode('utf-8')
s11 = s1.encode('gbk')
print(s11)

s2 = '中国'
s22 = s2.encode('utf-8')
s22 = s2.encode('gbk')
print(s22)

执行结果

b'alex'
b'alex'
b'\xe4\xb8\xad\xe5\x9b\xbd'
b'\xd6\xd0\xb9\xfa'

2.1 encode(编码)与decode(解码)

范例1(中文):

# str --->byte  encode 编码
s = "关羽"
b = s.encode("utf-8")
print(b)

# byte --->str decode 解码
s1 = b.decode("utf-8")
print(s1)

执行结果:

b'\xe5\x85\xb3\xe7\xbe\xbd'

关羽

范例2(英文):

# str --->byte  encode 编码
s = "abc"
b = s.encode("utf-8")
print(b)

# byte --->str decode 解码
s1 = b.decode("utf-8")
print(s1)

# byte --->str decode 解码
s2 = b.decode("gbk")
print(s1)

执行结果

b'abc'
abc
abc
上一篇下一篇

猜你喜欢

热点阅读