当前位置:首页>python>一文读懂Python字符串、编码与解码:新手也能彻底搞懂

一文读懂Python字符串、编码与解码:新手也能彻底搞懂

  • 2026-10-11 08:20:00
一文读懂Python字符串、编码与解码:新手也能彻底搞懂
【写在前面】可以参看我的视频进行学习,喜欢的朋友可以关注,点赞,分享。需要笔记代码的朋友,可以评论区留言。

大家在写Python代码时,一定经常遇到字符串处理、中文乱码、编码解码这些词,看似简单,一踩坑就头疼——比如打开文件中文乱码、网络请求返回乱码、保存数据出错……

这篇文章用最通俗的话,把Python字符串、编码、解码一次性讲清楚,新手也能一看就懂、一用就会!

一、先搞懂:字符串是什么?

在Python里,字符串(str)就是人类能看懂的文字,比如:

# 这些都是字符串
a = "Hello 微信公众号"
b = '123abc中文'
c = """多行字符串
也可以这样写"""

字符串的核心特点:

  1. 用单引号/双引号/三引号包裹;
  2. 里面可以放中文、英文、数字、符号;
  3. 它是文本,不是数字、列表、字典。

简单记:人能直接看懂的,就是字符串(str)。


二、为什么需要「编码/解码」?计算机不懂中文

这里有个最关键的常识:计算机只认识0和1,不认识中文、英文。

所以必须做一个翻译:

  • 编码:把人能看懂的字符串 → 计算机能看懂的字节(bytes)
  • 解码:把计算机能看懂的字节(bytes) → 人能看懂的字符串

一句话总结:编码 = 人看懂 → 机器看懂解码 = 机器看懂 → 人看懂


三、最常用的编码:UTF-8

编码有很多种(ASCII、GBK、GB2312、UTF-8),现在全世界统一用 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'
  • 开头带b' '的就是字节bytes,人类看不懂;
  • 必须指定utf-8,不指定可能默认出错。

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张表彻底记住(建议收藏)

操作
方法
数据类型变化
人话解释
常用编码
编码
.encode()
str → bytes
人看懂→机器看懂
utf-8
解码
.decode()
bytes → str
机器看懂→人看懂
utf-8

七、极简总结(看完这3句就够了)

  1. 字符串(str)是人能看懂的文字;
  2. 字节(bytes)是计算机能看懂的数据;
  3. 编码encode转bytes,解码decode转str,全程用UTF-8永不乱码!

最新文章

随机文章