'乱码'是每个 Python 开发者,尤其是处理中文、日文等非 ASCII 字符时,都会遇到的'噩梦'。明明代码逻辑正确,文件也存在,但打印出来或保存的文件却是一堆莫名其妙的符号(如 éÂ\x87Â\x91éÂ\x9eÂ\x93)。
这篇文章将带你彻底理解乱码产生的根本原因,并提供一套行之有效的解决方案和最佳实践。
一、乱码的本质:编码与解码的'鸡同鸭讲'
要理解乱码,首先必须明白两个核心概念:字符集(Charset) 和 字符编码(Character Encoding)。
- 字符集(Charset):是一个系统支持的所有抽象字符的集合。比如:
- ASCII:包含 128 个字符(英文字母、数字、符号),用 1 个字节(8 位)表示。

