You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Linux运行main.py报第46行存在非UTF-8代码无编码声明如何解决

问题原因说明
  • Windows中文环境下默认文本文件编码为GBK/GB2312,Python在Windows运行时会自动适配系统默认编码解析文件,因此不会触发报错
  • Linux系统默认全局编码为UTF-8,若Python解析时没有找到显式的编码声明,就会用UTF-8读取GBK编码的文件,碰到中文字符就会抛出编码错误。报错指向的行号不一定是实际存在非UTF-8字符的位置,只是解析到对应位置时触发了报错
解决方法
  • 方案1:添加显式编码声明(最快解决)
    直接在Python文件的第一行或第二行添加编码声明即可:
    如果文件保持GBK编码,添加 # -*- coding: gbk -*-
    如果文件后续会转为UTF-8编码,添加 # -*- coding: utf-8 -*-
    注意该声明必须放在文件最顶部,前面不能有其他可执行代码
  • 方案2:统一文件编码为UTF-8(更推荐,跨平台兼容性最好)
    用编辑器打开main.py,选择「保存为」功能,编码格式选择UTF-8,保存后替换服务器上的原文件即可。后续所有Python文件都默认存为UTF-8,就不会再出现跨平台编码问题
  • 方案3:运行时指定编码(仅临时测试用)
    执行脚本前先在Linux终端执行 export PYTHONIOENCODING=utf-8,之后再运行 python main.py 即可临时生效
注意事项

报错指向第46行@client.command()不代表该行存在问题,编码解析错误的行号通常是解析器碰到非法字符后停止的位置,非法字符大概率存在于46行之前的注释、字符串常量等包含中文的位置。

内容的提问来源于stack exchange,提问作者Georgi Koynov

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 20:54:05