news 2026/8/28 20:16:17

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/8/28 13:06:02

Kotaemon + GPU算力 极速构建高精度问答系统的黄金组合

Kotaemon GPU算力&#xff1a;极速构建高精度问答系统的黄金组合 在金融、医疗和法律等专业领域&#xff0c;一个常见的挑战是——用户提出的问题往往高度具体且依赖最新政策或权威文献&#xff0c;而传统智能客服要么答非所问&#xff0c;要么给出“看起来合理但无法溯源”的…

作者头像 李华
网站建设 2026/8/29 3:55:04

强力推荐:5分钟快速上手的PPT悬浮计时器终极指南

强力推荐&#xff1a;5分钟快速上手的PPT悬浮计时器终极指南 【免费下载链接】ppttimer 一个简易的 PPT 计时器 项目地址: https://gitcode.com/gh_mirrors/pp/ppttimer 还在为演讲时间失控而烦恼吗&#xff1f;每次重要演示时&#xff0c;是否都在担心时间不够用或者超…

作者头像 李华
网站建设 2026/8/26 12:35:17

MCA Selector终极指南:轻松管理Minecraft世界的完整教程

MCA Selector终极指南&#xff1a;轻松管理Minecraft世界的完整教程 【免费下载链接】mcaselector Querz/mcaselector: 是一个用于 Minecraft 的多玩家选择器&#xff0c;可以用于 Minecraft 服务器中快速选择多个玩家&#xff0c;支持多种 Minecraft 服务器和版本。 项目地址…

作者头像 李华
网站建设 2026/8/28 18:58:32

开源新星Kotaemon:让RAG应用落地更简单

开源新星Kotaemon&#xff1a;让RAG应用落地更简单 在企业智能客服系统开发的实践中&#xff0c;一个常见的困境是&#xff1a;明明已经有了大模型和知识库&#xff0c;为什么还是做不出稳定、可信赖的问答机器人&#xff1f;很多团队投入数月时间搭建基于LangChain或自研的RAG…

作者头像 李华
网站建设 2026/8/29 5:02:19

Kotaemon负载均衡部署方案建议

Kotaemon负载均衡部署方案建议 在企业智能化转型加速的今天&#xff0c;越来越多组织开始构建基于大语言模型的知识助手和客服系统。然而&#xff0c;当这些系统从原型走向生产环境时&#xff0c;一个关键问题浮出水面&#xff1a;如何让智能问答服务在高并发场景下依然稳定、快…

作者头像 李华
网站建设 2026/8/25 20:50:54

18、多种操作系统在虚拟机中的安装与配置指南

多种操作系统在虚拟机中的安装与配置指南 在虚拟机环境中安装和配置不同的操作系统,能够为用户提供多样化的使用体验和测试平台。下面将详细介绍NetBSD、OpenBSD、Novell Netware和Solaris等操作系统在VMware中的安装、设备配置以及内核管理等方面的内容。 1. NetBSD安装与配…

作者头像 李华