根本原因是Python解释器默认编码与源文件实际编码不匹配,Windows记事本常存为GBK而Linux/macOS终端用UTF-8;需在脚本首行添加严格格式的编码声明(如# -- coding: utf-8 --),并确保文件保存为对应编码且无前置字符。

电脑运行Python脚本时输出中文变成问号、方块或字符,根本原因是Python解释器默认使用系统编码读取源文件,而Windows记事本保存的.py文件常为GBK编码,Linux/macOS终端默认UTF-8,编码不匹配直接导致乱码。
确认脚本实际保存编码
右键脚本→“用记事本打开”→“另存为”,右下角查看当前编码显示。若显示“ANSI”,在Windows上即为GBK;若显示“UTF-8”,则无BOM或带BOM需进一步区分。
用VS Code打开同一脚本,右下角状态栏点击编码名称(如“UTF-8”或“GBK”),可实时确认并转换编码。
在代码首行添加编码声明
Python官方要求编码声明必须出现在源文件前两行内,且格式严格:以# -*- coding: xxx -*-或# coding: xxx形式书写,xxx为小写编码名。
立即学习“Python免费学习笔记(深入)”;
方法一:适配Windows常见GBK文件
在脚本最顶部第一行插入:# -*- coding: gbk -*-
方法二:强制统一用UTF-8(推荐长期维护)
先将.py文件用编辑器另存为“UTF-8无BOM”格式,再在首行写:# -*- coding: utf-8 -*-
注意:声明中的utf-8不能写成UTF-8或utf8,Python 3虽兼容部分变体,但PEP 263明确要求小写连字符形式,否则可能被忽略。
验证输出是否修复
第一步:保存修改后的脚本
第二步:关闭所有终端窗口,重新打开命令行(避免旧环境缓存残留)
第三步:执行python your_script.py
第四步:观察print()输出的中文是否正常显示
如果仍乱码,检查终端自身编码设置:Windows CMD需执行chcp 65001切换到UTF-8模式;PowerShell默认支持UTF-8,但旧版需运行$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding。
【关键前提】编码声明必须位于文件开头——任何空格、空行、BOM字节之前都不能有其他字符,否则Python会完全忽略该声明。


















