news 2026/7/23 12:36:39

Python中encode和decode的用法详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Python中encode和decode的用法详解

在Python中,encode()decode()方法是用于字符串(str)和字节(bytes)之间转换的核心方法,主要涉及字符编码的处理。

一、基本概念

编码(Encode)

字符串(str)转换为字节(bytes)

  • 字符串 → 字节

  • 人类可读文本 → 计算机存储/传输格式

解码(Decode)

字节(bytes)转换为字符串(str)

  • 字节 → 字符串

  • 计算机存储/传输格式 → 人类可读文本

二、基本用法

1. encode() 方法

# 基本语法 str.encode(encoding='utf-8', errors='strict') # 示例 text = "你好,世界!" byte_data = text.encode('utf-8') print(byte_data) # b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c\xef\xbc\x81' print(type(byte_data)) # <class 'bytes'>

2. decode() 方法

# 基本语法 bytes.decode(encoding='utf-8', errors='strict') # 示例 byte_data = b'\xe4\xbd\xa0\xe5\xa5\xbd' text = byte_data.decode('utf-8') print(text) # 你好 print(type(text)) # <class 'str'>

3. error参数详解

text = " café " # 包含特殊字符 # 1. strict(默认) - 遇到错误抛出异常 try: text.encode('ascii') # 会失败 except UnicodeEncodeError as e: print(f"错误: {e}") # 2. ignore - 忽略无法编码的字符 result = text.encode('ascii', errors='ignore') print(result) # b' caf ' # 3. replace - 用?替换无法编码的字符 result = text.encode('ascii', errors='replace') print(result) # b' caf? ' # 4. xmlcharrefreplace - 用XML实体替换 result = text.encode('ascii', errors='xmlcharrefreplace') print(result) # b' caf&#233; ' # 5. backslashreplace - 用Unicode转义序列替换 result = text.encode('ascii', errors='backslashreplace') print(result) # b' caf\\xe9 ' # 6. namereplace - 用\N{...}替换 result = text.encode('ascii', errors='namereplace') print(result) # b' caf\\N{LATIN SMALL LETTER E WITH ACUTE} '

4. 文件读写

# 写入文件(编码) with open('test.txt', 'w', encoding='utf-8') as f: f.write("中文内容") # 读取文件(解码) with open('test.txt', 'r', encoding='utf-8') as f: content = f.read() # 二进制模式需要手动编解码 with open('test.txt', 'wb') as f: f.write("中文内容".encode('utf-8')) with open('test.txt', 'rb') as f: content = f.read().decode('utf-8')

5. 网络通信

import socket # 发送数据 data_to_send = "请求数据".encode('utf-8') socket.send(data_to_send) # 接收数据 received_bytes = socket.recv(1024) received_text = received_bytes.decode('utf-8')

6.编解码应该一致

# 错误示例 text = "中文" gbk_bytes = text.encode('gbk') try: wrong_text = gbk_bytes.decode('utf-8') # 解码错误! except UnicodeDecodeError: print("编码不一致导致解码失败") # 正确做法:保持编码一致 correct_text = gbk_bytes.decode('gbk')

最佳实践

  1. 始终明确指定编码,不要依赖默认值

  2. 统一使用UTF-8作为项目标准编码

  3. 尽早解码,晚点编码:在程序内部使用字符串,只在I/O时进行编解码

  4. 处理异常:始终处理可能的编解码异常

  5. 文档说明:在项目文档中明确说明使用的编码

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/21 8:39:25

Kotaemon框架的测试驱动开发实践

Kotaemon框架的测试驱动开发实践 在企业纷纷拥抱大语言模型&#xff08;LLM&#xff09;构建智能客服、知识助手等应用的今天&#xff0c;一个现实问题日益凸显&#xff1a;我们能相信AI给出的答案吗&#xff1f; 尽管GPT类模型在自然语言生成上表现出色&#xff0c;但其“幻…

作者头像 李华
网站建设 2026/7/21 15:08:43

7、VMware使用指南:功能特性与操作详解

VMware使用指南:功能特性与操作详解 1. 虚拟机操作基础 在使用虚拟机时,可能会遇到客操作系统屏幕无法完全显示在VMware窗口中的情况。若已勾选相关选项,可将鼠标向右下方移动查看剩余部分。 若“Scroll when mouse…”功能关闭,可通过以下操作临时开启:点击鼠标按钮并…

作者头像 李华
网站建设 2026/7/22 4:08:43

8、VMware虚拟机硬件配置与操作指南

VMware虚拟机硬件配置与操作指南 1. 时间同步与任务栏显示 时间同步 :虚拟机和主机操作系统之间的时间同步会使客户机系统的时钟与主机系统的时钟保持一致。在某些客户机系统(如Unix)中,只有以超级用户(root)身份运行工具包才能执行此同步。而且,只有当客户机系统的时…

作者头像 李华
网站建设 2026/7/22 20:27:33

13、VMware 中 Linux 客户操作系统的使用与配置

VMware 中 Linux 客户操作系统的使用与配置 1. Linux 概述 Linux 是 x86 架构上最受欢迎的类 Unix 操作系统。它最初由 Linus Torvalds 开发,起初只是一个供黑客使用的小内核。1991 年,Linus 在 Usenet 上发布了 Linux,并表示大家可以自由地对其进行修改和开发,随后许多人…

作者头像 李华
网站建设 2026/7/23 4:24:01

14、Linux 系统下 VMware 的使用指南

Linux 系统下 VMware 的使用指南 1. 开启 X 窗口系统 准备好使用 X 窗口系统后,有多种启动会话的方式:可以使用 startx 或 xinit 命令来启动,也可以激活显示管理器,如 gdm (用于 GNOME)、 kdm (用于 KDE)或 xdm 。 若在使用 XF86_VMware 服务器时遇到问题,…

作者头像 李华
网站建设 2026/7/22 7:41:29

Day 1:Git入门避坑:新手3步搞定首次提交

Day 1&#xff1a;Git入门避坑&#xff1a;新手3步搞定首次提交&#xff08;附《Pro Git》核心知识点&#xff09; “你有没有经历过这样的场景&#xff1a;你熬夜写了一个功能&#xff0c;第二天发现代码改崩了&#xff0c;想找回原来的版本&#xff0c;结果发现没有备份&…

作者头像 李华