Atom中script插件运行Python/JS脚本输出乱码,主因是终端编码(如Windows cmd默认GBK)与Atom文件UTF-8编码不一致;需统一编码:设环境变量PYTHONIOENCODING=utf-8、脚本内重配置stdout、终端执行chcp 65001,或批量转码并配.editorconfig强制UTF-8。

Atom 里 script 插件运行 Python/JS 脚本输出乱码
这不是文件编码错了,而是 Atom 的 script 插件调用终端时,终端(cmd / PowerShell / Terminal)的默认编码和 Atom 保存的文件编码不一致。Windows 上 cmd 默认是 GBK(CHCP 936),而 Atom 默认新建文件用 utf8,一读一写就错位。
实操建议:
- 临时解决:在 Atom 中按
Ctrl+Shift+P打开命令面板,运行Script: Run Options,勾选Use UTF-8 for output(如果插件版本支持) - 更稳方式:在脚本开头显式声明输出编码,比如 Python 加
import sys; sys.stdout.reconfigure(encoding='utf-8')(3.7+)或设环境变量PYTHONIOENCODING=utf-8 - Windows 用户可改终端默认编码:在 cmd 中执行
chcp 65001,再启动 Atom;或在 PowerShell 中加$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = New-Object System.Text.UTF8Encoding - 别依赖
script插件自动识别编码——它不读取文件 BOM,也不检查# -*- coding: gbk -*-这类注释
右下角点“GBK”后中文正常,但 Ctrl+S 保存还是乱码
你只做了 Reopen with Encoding → GBK,没做 Save with Encoding → UTF-8。Atom 的「切换读取方式」和「真正重写文件」是两步,缺一不可。
常见错误现象:
- 点了 GBK,内容变正常 → 满足了视觉需求,就直接
Ctrl+S→ Atom 仍以原编码(比如 ISO-8859-1)把字节流写回磁盘,结果还是乱码 - 点了 GBK 后,又点右下角选
UTF-8→ 文本瞬间变乱 → 这是正确信号,说明内存里已是 Unicode,正等待你用 UTF-8 编码落盘 - 点了
Save with Encoding → UTF-8,但状态栏仍显示 GBK → 因为 Atom 保存后会按新文件头(BOM 或无标记)重新判断,若没 BOM,可能误判为“无标识”,需手动再切一次确认
config.cson 改了 defaultEncoding 还是乱码?
defaultEncoding: "utf8" 只控制新建空白文件、粘贴文本的初始编码,对已存在的文件完全无效。很多人卡在这一步,是因为混淆了「新建文件」和「已有文件」的加载逻辑。
必须注意的细节:
- 必须小写
utf8,不是UTF-8、UTF8或utf-8,CSON 解析失败时会静默忽略整行 - 必须顶格写在
config.cson最外层,不能缩进,不能嵌套在"*"或core:下面 - 改完必须彻底退出 Atom:macOS 要关掉 Dock 图标,Windows 要在任务管理器杀掉所有
atom.exe进程 - 即使设置生效,打开一个旧 GBK 文件,Atom 仍会优先按它原来的编码读取——这是设计,不是 bug
项目里混着 UTF-8、GBK、UTF-8-BOM,怎么根治?
靠 Atom 点点点没有意义。这类混合编码项目,任何编辑器设置都只是补丁,必须统一底层字节表示。
推荐路径:
- 先用
file -i *.js(Linux/macOS)或enca -L zh file.txt确认每个文件真实编码,别信后缀或右下角显示 - 批量转码用
iconv:例如find . -name "*.py" -exec iconv -f GBK -t UTF-8 -o {}.utf8 {} \; && rename 's/\.utf8$//' *.py.utf8 - 转完立刻加
.editorconfig:写入charset = utf-8和end_of_line = lf,Atom 的editorconfig插件会强制遵守 - Git 层加固:在
.gitattributes里加* text=auto charset=utf-8,避免下次提交又混入 GBK
真正容易被忽略的是:Save with Encoding 是单次操作,不能替代批量清洗;而 Force UTF-8 插件开关一旦开启,会禁用右下角所有编码切换项,让 GBK 文件彻底无法查看——它不是万能钥匙,是窄门。

















