2026/4/4 5:51:56
网站建设
项目流程
网站设计与开发培训班,专门做效果图的网站,江门企业自助建站系统,网站建设相关的在Python中#xff0c;encode() 和 decode() 方法是用于字符串#xff08;str#xff09;和字节#xff08;bytes#xff09;之间转换的核心方法#xff0c;主要涉及字符编码的处理。
一、基本概念
编码#xff08;Encode#xff09;
将 字符串#xff08;str…在Python中encode()和decode()方法是用于字符串str和字节bytes之间转换的核心方法主要涉及字符编码的处理。一、基本概念编码Encode将字符串str转换为字节bytes字符串 → 字节人类可读文本 → 计算机存储/传输格式解码Decode将字节bytes转换为字符串str字节 → 字符串计算机存储/传输格式 → 人类可读文本二、基本用法1. encode() 方法# 基本语法 str.encode(encodingutf-8, errorsstrict) # 示例 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 bytes2. decode() 方法# 基本语法 bytes.decode(encodingutf-8, errorsstrict) # 示例 byte_data b\xe4\xbd\xa0\xe5\xa5\xbd text byte_data.decode(utf-8) print(text) # 你好 print(type(text)) # class str3. error参数详解text café # 包含特殊字符 # 1. strict默认 - 遇到错误抛出异常 try: text.encode(ascii) # 会失败 except UnicodeEncodeError as e: print(f错误: {e}) # 2. ignore - 忽略无法编码的字符 result text.encode(ascii, errorsignore) print(result) # b caf # 3. replace - 用?替换无法编码的字符 result text.encode(ascii, errorsreplace) print(result) # b caf? # 4. xmlcharrefreplace - 用XML实体替换 result text.encode(ascii, errorsxmlcharrefreplace) print(result) # b caf#233; # 5. backslashreplace - 用Unicode转义序列替换 result text.encode(ascii, errorsbackslashreplace) print(result) # b caf\\xe9 # 6. namereplace - 用\N{...}替换 result text.encode(ascii, errorsnamereplace) print(result) # b caf\\N{LATIN SMALL LETTER E WITH ACUTE} 4. 文件读写# 写入文件编码 with open(test.txt, w, encodingutf-8) as f: f.write(中文内容) # 读取文件解码 with open(test.txt, r, encodingutf-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)最佳实践始终明确指定编码不要依赖默认值统一使用UTF-8作为项目标准编码尽早解码晚点编码在程序内部使用字符串只在I/O时进行编解码处理异常始终处理可能的编解码异常文档说明在项目文档中明确说明使用的编码