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

求助:SyntaxError: Non-ASCII character错误修复,添加代码行无效

修复SyntaxError: Non-ASCII character错误(添加编码声明后仍未解决的情况)

嘿,我之前也踩过这个编码的坑!明明加了# -*- coding: utf-8 -*-还是报错?别慌,咱们从这几个方向逐一排查:

  • 编码声明的位置必须正确
    Python只会识别脚本的第一行或第二行的编码声明。如果你的脚本第一行是shebang(比如#!/usr/bin/env python),那编码声明一定要放在第二行,不能往后挪。举个正确的例子:

    #!/usr/bin/env python
    # -*- coding: utf-8 -*-
    

    要是把声明放在第三行及以后,Python根本不会读取它,自然没用。

  • 检查编码声明的拼写和符号
    别小看细节!比如把utf-8写成utf8(虽然部分场景兼容,但标准写法是带横杠的utf-8),或者不小心用了中文的#、-符号,这些都会导致声明失效。一定要确保是纯英文符号。

  • 确认文件实际保存的编码
    很多时候问题出在编辑器的保存设置上:你加了UTF-8声明,但编辑器悄悄把文件存成了GBK、UTF-16或者其他编码。打开你的编辑器(比如VS Code、PyCharm),看右下角的编码标识,点击后选择「通过编码保存」,明确选UTF-8格式。

  • 排查隐藏的非ASCII字符
    有些看不见的特殊字符(比如全角空格、零宽空格、不可见的控制字符)会混在代码里,肉眼根本发现不了,但Python会检测到。你可以用这段代码打印脚本的字节形式,找出可疑行:

    with open('你的脚本文件名.py', 'rb') as f:
        for line_num, line_bytes in enumerate(f, 1):
            print(f"第{line_num}行: {repr(line_bytes)}")
    

    输出里如果有\xXX(XX不是ASCII范围内的字节),那就是问题所在,删掉对应的字符就行。

  • Python 2.x额外注意:字符串要加u前缀
    如果你还在维护Python 2的代码,即使加了编码声明,直接写print("中文")也会报错,必须写成print(u"中文")(加u前缀表示Unicode字符串)。不过真心建议升级到Python 3,它默认支持UTF-8,大部分编码问题都会自动消失。

  • 检查导入的第三方模块
    如果错误提示来自你导入的模块,那问题不在你的主脚本里。找到那个模块文件,按照上面的步骤检查它的编码声明和保存格式。

一般来说,按这个顺序排查,总能找到问题所在!

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 08:47:27