python3如何中文转换编码?

Python3通过encode()和decode()处理中文编码转换,str类型默认为Unicode,与外部交互时需转为bytes;1. 字符串用encode('utf-8')或encode('gbk')转字节;2. 字节用decode('utf-8')或decode('gbk')转回字符串;3. 解码错误可用errors='ignore'或'replace'处理;4. 文件读写需指定encoding参数如encoding='utf-8',确保编解码一致,避免乱码。

Python3 中处理中文编码转换,主要是通过字符串的 encode() 和字节的 decode() 方法来实现。Python3 默认使用 Unicode(即 str 类型),在与外部交互(如文件、网络)时通常需要转为字节流(bytes),这时就涉及编码问题。

1. 字符串转指定编码(encode)

将中文字符串转换为特定编码格式的字节数据,比如 UTF-8、GBK 等:

text = "你好,世界"
utf8_bytes = text.encode('utf-8')
print(utf8_bytes)  # 输出: b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c'

gbk_bytes = text.encode('gbk') print(gbk_bytes) # 输出: b'\xc4\xe3\xba\xc3\xa3\xac\xca\xc0\xbd\xe7'

2. 字节数据转回字符串(decode)

当你接收到字节数据(如从文件或网络读取),需要按正确的编码方式解码为中文字符串:

# 假设收到的是 UTF-8 编码的字节
utf8_data = b'\xe4\xbd\xa0\xe5\xa5\xbd\xef\xbc\x8c\xe4\xb8\x96\xe7\x95\x8c'
text1 = utf8_data.decode('utf-8')
print(text1)  # 输出: 你好,世界

如果是 GBK 编码的字节

gbk_data = b'\xc4\xe3\xba\xc3\xa3\xac\xca\xc0\xbd\xe7' text2 = gbk_data.decode('gbk') print(text2) # 输出: 你好,世界

3. 处理编码错误

如果编码不匹配,比如用 UTF-8 解码 GBK 字节,会抛出 UnicodeDecodeError。可以使用 errors 参数处理异常:

# 忽略无法解码的字符
text = gbk_data.decode('utf-8', errors='ignore')

替换为 符号

text = gbk_data.decode('utf-8', errors='replace')

4. 文件读写中的中文编码

读写文件时明确指定编码,避免乱码:

# 写入文件
with open('zh.txt', 'w', encoding='utf-8') as f:
    f.write("中文内容")

读取文件

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

基本上就这些。关键是搞清数据当前是 str 还是 bytes,然后用对 encode/decode 和编码格式。常见中文编码是 UTF-8 和 GBK,注意保持一致。