大家在写Python代码时,一定经常遇到字符串处理、中文乱码、编码解码这些词,看似简单,一踩坑就头疼——比如打开文件中文乱码、网络请求返回乱码、保存数据出错……
这篇文章用最通俗的话,把Python字符串、编码、解码一次性讲清楚,新手也能一看就懂、一用就会!
一、先搞懂:字符串是什么?
在Python里,字符串(str)就是人类能看懂的文字,比如:
# 这些都是字符串
a = "Hello 微信公众号"
b = '123abc中文'
c = """多行字符串
也可以这样写"""
字符串的核心特点:
简单记:人能直接看懂的,就是字符串(str)。
二、为什么需要「编码/解码」?计算机不懂中文
这里有个最关键的常识:计算机只认识0和1,不认识中文、英文。
所以必须做一个翻译:
- 编码:把人能看懂的字符串 → 计算机能看懂的字节(bytes)
- 解码:把计算机能看懂的字节(bytes) → 人能看懂的字符串
一句话总结:编码 = 人看懂 → 机器看懂解码 = 机器看懂 → 人看懂
三、最常用的编码:UTF-8
编码有很多种(ASCII、GBK、GB2312、UTF-8),现在全世界统一用 UTF-8。
✅ 记住:Python写代码、处理文件、网络请求,全部默认用 UTF-8。
四、Python 编码与解码实战(最核心代码)
1. 编码:str → bytes(.encode())
把字符串变成计算机能存储/传输的字节数据:
# 定义一个字符串(人看懂)
s = "你好,微信公众号"
# 编码:转成 bytes(机器看懂)
b = s.encode("utf-8")
print(b)
# 输出:b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe5\xbe\xae\xe4\xbf\xa1\xe5\x85\xac\xe4\xbc\x97\xe5\x8f\xb7'
2. 解码:bytes → str(.decode())
把字节变回人类能看懂的字符串:
# 解码:bytes 转回 str
s2 = b.decode("utf-8")
print(s2) # 输出:你好,微信公众号
3. 黄金规则(必背!)
用什么编码,就用什么解码!
# 正确
s.encode("utf-8").decode("utf-8")
# 错误(编码utf-8,解码gbk,必乱码)
s.encode("utf-8").decode("gbk")
五、新手最常见的3个坑(附解决方法)
坑1:打开文件中文乱码
错误写法:
f = open("test.txt")
print(f.read()) # 中文乱码
正确写法(指定 encoding=utf-8):
f = open("test.txt", encoding="utf-8")
print(f.read()) # 中文正常
坑2:网络请求返回乱码
爬网页、发接口时,要手动解码:
import requests
resp = requests.get("https://www.baidu.com")
html = resp.content.decode("utf-8") # 字节→字符串
坑3:编码解码不匹配
永远记住:encode 和 decode 必须用同一个编码!99%的场景都用:utf-8
六、1张表彻底记住(建议收藏)
七、极简总结(看完这3句就够了)
- 编码encode转bytes,解码decode转str,全程用UTF-8永不乱码!