Python处理中文乱码需统一UTF-8编码:源文件首行声明# -- coding: utf-8 --,文件读写显式指定encoding='utf-8',终端设为UTF-8模式,外部数据按实际编码解码。

Python处理中文乱码,核心在于统一编码格式、明确声明源码编码、正确设置文件读写编码。关键不是“修复乱码”,而是从源头避免编码不一致。
源文件开头加编码声明
Python 2 默认 ASCII,Python 3 默认 UTF-8,但显式声明更稳妥,尤其涉及中文注释或字符串字面量时:
- 在 .py 文件第一行或第二行添加:# -*- coding: utf-8 -*-
- 该声明仅影响 Python 解释器如何读取源码本身,不影响运行时数据流
- 若用其他编码(如 GBK),需对应修改声明,但强烈建议全程使用 UTF-8
文件读写时指定 encoding 参数
open() 函数默认编码依赖系统 locale,极易出错。必须显式传入 encoding:
- 读取中文文本:with open('data.txt', 'r', encoding='utf-8') as f:
- 写入中文文本:with open('out.txt', 'w', encoding='utf-8') as f:
- 若文件是 GBK 编码(如 Windows 记事本旧默认),改用 encoding='gbk',但应优先转为 UTF-8 存储
- 避免不带 encoding 的 open(),尤其在跨平台或读第三方文件时
终端/控制台输出中文正常显示
即使代码和文件没问题,终端本身不支持 UTF-8 也会显示为 或空格:
程序介绍:程序采用.net 2.0进行开发,全自动应用淘客api,自动采集信息,无需,手工更新,源码完全开放。(程序改进 无需填入阿里妈妈淘客API 您只要修改app_code文件下的config.cs文件中的id为你的淘客id即可)针对淘客3/300毫秒的查询限制,系统采用相应的解决方案,可以解决大部分因此限制带来的问题;程序采用全局异常,避免偶尔没考虑到的异常带来的问题;程序源码全部开放,请使
立即学习“Python免费学习笔记(深入)”;
- Windows CMD:执行 chcp 65001 切换到 UTF-8 模式(临时生效)
- Windows PowerShell / VS Code 终端:通常默认支持 UTF-8,可检查 $OutputEncoding 是否为 UTF8Encoding
- macOS / Linux 终端:一般默认 UTF-8,可通过 locale | grep UTF 确认
- IDE 内置终端(如 PyCharm):在设置中搜索 “file encoding” 和 “console encoding”,确保均为 UTF-8
处理 requests 或数据库返回的中文
外部数据源常自带编码信息,不能盲目 decode:
- requests.get():响应体默认按 headers 中的 charset 解码,但有时不准。可手动指定:r.content.decode('utf-8') 或 r.text(已解码)
- MySQLdb / pymysql:连接时加上 charset='utf8mb4',并确保表字符集为 utf8mb4_unicode_ci
- SQLite:默认支持 UTF-8,无需额外设置,但插入前确保字符串是 str 类型(非 bytes)










