什么是 bytes 和 string?
在 Python 3 中,str 表示 Unicode 字符串,而 bytes 表示原始字节序列。两者不能直接互换,必须通过编码(encode)和解码(decode)进行转换。
基本转换方法:使用 decode()
将 bytes 转换为 str 最常用的方法是调用 .decode(encoding):
b = b'Hello, world!'
s = b.decode('utf-8')
print(s) # 输出: Hello, world!
常见编码格式
- UTF-8:最通用的 Unicode 编码,推荐默认使用。
- GBK / GB2312:中文 Windows 系统常用编码。
- Latin-1 (ISO-8859-1):适用于西欧语言。
务必确保使用的编码与原始字节数据一致,否则会抛出 UnicodeDecodeError。
处理编码错误
当字节序列无法用指定编码解码时,可使用 errors 参数控制行为:
# 忽略无法解码的字节
s = b'\xff\xfe'.decode('utf-8', errors='ignore')
# 替换为占位符(如 )
s = b'\xff\xfe'.decode('utf-8', errors='replace')
实战演示(浏览器模拟)
下面是一个简单的 JavaScript 模拟(仅用于展示逻辑,非真实 Python 执行):
注意:在真实 Python 环境中,请始终明确指定编码格式。不要依赖系统默认编码,以保证程序跨平台兼容性。