MST
星途 面试题库

面试题:Python中字符编码与解码的常见错误及处理

在Python中进行字符编码与解码操作时,经常会遇到`UnicodeDecodeError`和`UnicodeEncodeError`错误。请描述这两种错误通常在什么情况下发生,并举例说明如何解决这些错误。
20.7万 热度难度
编程语言Python

知识考点

AI 面试

面试题答案

一键面试

UnicodeDecodeError

  1. 发生情况:当使用错误的编码方式将字节序列解码为Unicode字符串时,会发生UnicodeDecodeError。例如,尝试使用utf - 8编码去解码实际是gbk编码的字节序列。
  2. 示例及解决方法
    # 假设这里有一个用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

  1. 发生情况:当使用不支持某些字符的编码方式将Unicode字符串编码为字节序列时,会发生UnicodeEncodeError。例如,尝试使用ascii编码去编码包含非ASCII字符(如中文)的Unicode字符串,因为ascii编码只能处理ASCII字符集内的字符。
  2. 示例及解决方法
    s = '中国'
    try:
        # 错误的编码方式,会抛出UnicodeEncodeError
        byte_str = s.encode('ascii')  
    except UnicodeEncodeError:
        # 正确的编码方式,使用支持中文的编码,如utf - 8
        byte_str = s.encode('utf - 8')  
        print(byte_str)