面试题答案
一键面试UnicodeDecodeError
- 发生情况:当使用错误的编码方式将字节序列解码为Unicode字符串时,会发生
UnicodeDecodeError
。例如,尝试使用utf - 8
编码去解码实际是gbk
编码的字节序列。 - 示例及解决方法:
# 假设这里有一个用gbk编码的字节串 byte_str = b'\xd6\xd0\xb9\xfa' try: # 错误的解码方式,会抛出UnicodeDecodeError s = byte_str.decode('utf - 8') except UnicodeDecodeError: # 正确的解码方式,使用gbk编码 s = byte_str.decode('gbk') print(s)
UnicodeEncodeError
- 发生情况:当使用不支持某些字符的编码方式将Unicode字符串编码为字节序列时,会发生
UnicodeEncodeError
。例如,尝试使用ascii
编码去编码包含非ASCII字符(如中文)的Unicode字符串,因为ascii
编码只能处理ASCII字符集内的字符。 - 示例及解决方法:
s = '中国' try: # 错误的编码方式,会抛出UnicodeEncodeError byte_str = s.encode('ascii') except UnicodeEncodeError: # 正确的编码方式,使用支持中文的编码,如utf - 8 byte_str = s.encode('utf - 8') print(byte_str)