Python基础教程4c–字符串str和字节序bytes

原文链接: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

发表评论

您的电子邮箱地址不会被公开。 必填项已用*标注