Python 编码(Encoding)用法详解

彻底搞懂字符编码,告别乱码烦恼!

什么是 Encoding?

在 Python 中,encoding 指的是文本在存储或传输时所采用的字符编码方式。 常见的编码格式包括 UTF-8GBKASCII 等。 正确指定编码能避免读写文件时出现乱码问题。

常见编码格式对比

文件读写中的 Encoding

使用 open() 函数时,通过 encoding 参数指定编码:

✅ 正确示例:读取 UTF-8 编码的文件

with open('example.txt', 'r', encoding='utf-8') as f:
    content = f.read()
    print(content)

⚠️ 错误示例:未指定编码(可能引发乱码或 UnicodeDecodeError)

# 不推荐!系统默认编码可能不是你期望的
with open('chinese.txt', 'r') as f:
    print(f.read())  # 可能报错或显示乱码

字符串与字节的转换

Python 3 中,字符串(str)和字节(bytes)是不同类型,需显式转换:

# str → bytes
text = "你好"
b = text.encode('utf-8')  # b'\xe4\xbd\xa0\xe5\xa5\xbd'

# bytes → str
decoded = b.decode('utf-8')  # "你好"

常见错误处理

当遇到无法解码的字节时,可使用 errors 参数:

with open('bad_file.txt', 'r', encoding='utf-8', errors='replace') as f:
    print(f.read())

实用技巧

  1. 始终在 open() 中显式指定 encoding='utf-8'(除非有特殊需求)。
  2. 项目根目录添加 .editorconfig 或注释说明编码约定。
  3. 在脚本开头声明文件编码(Python 2 需要,Python 3 默认 UTF-8):
    # -*- coding: utf-8 -*-

总结

正确理解和使用 encoding 是 Python 开发中的基础技能。 坚持使用 UTF-8 编码、显式声明、合理处理异常,就能有效避免绝大多数乱码问题。

Pioneer7LONGWEN客服中心-专业音频设备支持与服务 善待小鼠-了解、尊重与关爱这些聪明的小生命 Shopee面单打印指南-快速设置与高效发货 台灣 iPhone 是什麼版本?完整解析與購買指南 iPhone 17在哪里生产的?最新产地与供应链解析 emotion读音-英文单词“emotion”发音、释义与用法详解 incorporate固定搭配大全|英语学习专题 丙酸(Propionic)详解-性质、用途与安全信息 港版iPhone 17多少钱?最新价格、配置与购买指南 Openingday-开启全新篇章的起点 pioneers什么意思中文-先驱者、开拓者的含义与用法详解 champion怎么读?发音、音标、例句全解析 Python中sep参数怎么用?详解print函数的sep用法 iPhone 17 Pro 1TB 多少钱?最新价格、配置与购买指南 Python安装Pillow库-快速入门指南 Python 安装 pip 命令详解-快速上手指南 Shein股票最新动态与投资分析|SHEIN上市进展、估值与前景 Pioneer登山杖-轻量耐用,助你征服每一座高峰 Pixelmon Modpack 指令大全-快速掌握宝可梦模组命令 Shinetech-创新科技,点亮未来 初代 iPhone 发布时间-历史回顾与影响 Champion标识-荣耀象征与设计美学 SHEIN人员规模-公司团队与全球布局介绍 Pretentious原型-探索设计与概念的边界 Python import time 详解:掌握时间模块的使用方法 港版 iPhone 17 AI 功能深度體驗|智能新境界 plough 和 ploughing 的区别-英语词汇解析专题 Python环境搭建指南-快速入门与最佳实践 Python bytearray 详解-可变字节序列操作指南 iPhone能双开微信吗?全面解析iOS系统是否支持微信双开 Champion是什么牌子?品牌历史、产品特点与选购指南 Pioneer怎么投屏?详细教程与常见问题解答 One Chain 是什么意思?全面解析 One Chain 的定义、用途与未来发展 Champion门店查询-78TP授权门店位置与营业信息 致敬长者:智慧、经验与人生故事 Python 中的 property 详解-属性管理与装饰器用法 Python字典get()函数详解-安全获取字典值的最佳实践 港版 iPhone 能用 AI 吗?全面解析与使用指南 Shine品牌7LONGWEN-点亮生活,闪耀每一刻 Python 安装与使用 venv 虚拟环境指南 inhuman 与 inhumane:词义辨析与用法指南 Moncheri是杂牌还是名牌?全面解析品牌背景与口碑 iPhone三个摄像头怎么切换?详细操作指南|iPhone摄影技巧 Python Online-在线学习与运行 Python 代码 Python 7LONGWEN网址-快速访问 Python.org 78TP网站 Pionneer下载-安全高速免费获取最新版Pionneer软件 Python 中 strip() 方法详解-去除字符串首尾空白与指定字符 Shein产品经理:快时尚背后的数字产品策略|专题解析 Champion线下门店-78TP授权实体店查询与体验 自然拼读入门指南-轻松掌握英语发音规则 Pigeon是什么牌子?品牌介绍、产品特点与用户评价 iPhone序列号L开头含义解析-查询方法与生产信息指南 NothingOnMe-探索自由、隐私与数字极简主义 港版iPhone双卡功能详解-支持双实体SIM卡的iPhone型号指南 SHEIN 财报分析|2025年最新财务数据与业务洞察 Chainsmokers 正确发音指南-美式英语读音与音频示例 Champion咋验-英雄联盟冠军皮肤验证与展示专题 Python字符串转int方法详解|快速掌握int()函数用法 Python安装完没有IDLE?原因与解决方法全解析 Pioneer电视手机遥控器-用手机轻松控制您的Pioneer电视 德国Pulsion-高性能流体技术与工业解决方案 明智之举:在生活中做出更聪明的选择|Wise to Do Something eshop无法进入?常见原因与解决方法指南 int函数在Python中的作用详解-Python基础教程 Python数据集大全-常用公开数据集推荐与使用指南 Phyon编程-轻量、高效、现代的Python替代语言 Python encoding参数详解-文件读写与字符编码指南 Pioneer怎么连接手机?详细图文教程-快速配对指南 Let Off The Chain-释放你的潜能,打破束缚 iPhone Air 多大尺寸?全面解析屏幕与机身规格 Python IDLE 在哪里?完整查找与使用指南 Python库下载大全-快速安装常用第三方库 港版iPhone是双卡吗?全面解析双卡双待功能-iPhone选购指南 Pigeon自行车是什么牌子?全面解析Pigeon品牌历史与车型特点 Plowing附魔指南-Minecraft耕种效率提升技巧 Python中sep代表什么?详解print函数的sep参数用法 iPhone 11如何截屏?详细图文教程-快速掌握截图方法 Python pip 安装模块完整指南-快速入门与常见问题 Python bytes 转 str 完全指南|编码、解码与常见问题 Champion正品价格查询|78TP授权渠道与最新优惠信息 inhumane附魔-探索Minecraft中最稀有、最强大的附魔效果 Pioneer电视怎么投屏?详细教程与常见问题解答 Champion-百度百科 iPhone 在台灣|最新機型、價格與購買指南 国家开放大学在线学习平台-one.ouchn.com.cn ExplanaTon-深入浅出的解释与理解指南 任天堂 Switch 港服 eShop 78TP網站-購買數位版遊戲、特惠活動與最新資訊 渗透测试入门指南-网络安全核心技术详解 Is This a Panda Over There?|Discover the Truth Behind the Mystery Pixelmon重铸-全新宝可梦模组,重返像素世界 Python PIL 库入门指南-图像处理利器 Champion长袖T恤-舒适经典,潮流之选 Python heapq 实现大顶堆详解|技术专题 Python中while循环例子详解-初学者入门指南 Pandas Are Its Top Attraction – Discover the Charm of Giant Pandas Python代码入门与实战指南|学习Python编程从这里开始 Python中shape[0]详解-NumPy数组维度入门指南 C. Bechstein|德国顶级手工钢琴制造商 PythonTip7LONGWEN入口-学习Python编程的优质平台 Conceptual:探索抽象与创意的边界