原文链接:http://www.juzicode.com/python-tutorial-str-bytes/
str转bytes
定义字符串a=”桔子code”,包含中文,使用字符串的encode()方法将其编码为字节序
print('juzicode.com / VX:桔子code')
a = '桔子code'
x = a.encode('gbk')
y = a.encode('utf8')
print('type(a)',type(a))
print('type(x)',type(x))
print('type(y)',type(y))
print('a',a)
print('x',x)
print('y',y)
使用type()检查类型,a为str类型,经过a.encode()后的变量为bytes类型.
字符串的encode()方法入参为编码方法,可以是gbk或者其他本地化编码方法,也可以是utf8,变形有utf,utf-8,并且对大小写不敏感,比如UTF8,uTF-8都是合法的。当然还有utf16、utf32等编码方法:
y2 = a.encode('utf16')
y3 = a.encode('utf32')
print('y2',y2)
print('y3',y3)
==========运行结果;
y2 b'\xff\xfeThP[c\x00o\x00d\x00e\x00'
y3 b'\xff\xfe\x00\x00Th\x00\x00P[\x00\x00c\x00\x00\x00o\x00\x00\x00d\x00\x00\x00e\x00\x00\x00'
bytes转str
接前面的例子,x是a经过gbk方式编码的bytes型变量,如果要转换为str,使用decode()方法:
b = x.decode('gbk')
print('b:',b)
======运行结果:
b: 桔子code
如果使用了不符合bytes类型原本编码方式的解码方法,将导致抛异常;
b = x.decode('gbk')
print('b:',b)
b = x.decode('utf8')
print('b:',b)
======运行结果:
b: 桔子code
Traceback (most recent call last):
File "test.py", line 27, in < module >
b = x.decode('utf8')
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xbd in position 0: invalid start byte