什么是字符编码?
字符编码是将人类可读的字符(如字母、汉字、符号)转换为计算机可以存储和传输的二进制数据的过程。在Python中,正确处理编码对读写文件、网络通信、文本处理至关重要。
常见编码格式
- ASCII:仅支持英文字符(0–127)
- UTF-8:变长编码,兼容ASCII,支持全球所有语言,推荐使用
- GBK/GB2312:中文编码标准,主要用于简体中文环境
- Latin-1 (ISO-8859-1):西欧语言编码
Python中的encode()与decode()
在Python 3中,str 是 Unicode 字符串,bytes 是字节序列。两者通过 encode() 和 decode() 相互转换:
# 将字符串编码为字节
text = "你好,世界!"
b = text.encode('utf-8') # b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81'
# 将字节解码为字符串
decoded = b.decode('utf-8') # "你好,世界!"
实战示例:处理文件编码
读取一个UTF-8编码的文件:
with open('example.txt', 'r', encoding='utf-8') as f:
content = f.read()
若不指定 encoding,Python会使用系统默认编码(Windows常为GBK),可能导致中文乱码。
常见错误与解决
UnicodeDecodeError:尝试用错误编码解码字节UnicodeEncodeError:无法将字符编码为目标编码(如ASCII无法编码中文)- 建议:始终明确指定编码,优先使用
utf-8
小工具:编码演示
输入一段文字,查看其UTF-8编码的字节表示: