python脚本,显示错误SyntaxError: Non-ASCII character
发布于 作者:苏南大叔 来源:程序如此灵动~

在运行python
脚本的时候,如果脚本里面存在中文的话,就会显示类似错误SyntaxError: Non-ASCII character
。本文中,苏南大叔就致力于解决这个字符集的问题。
本文测试环境:mac
、python@2.7.0
。整体的解决思路就是在顶部增加个shebang
行,区别就在于shebang
行的具体内容不一样。方案有好几个,随便选一个合适的就行。据说,只有在python@2
系列,才会有这样的问题,以为默认的编码是ASCII
。python@3
是不会有这样的问题的。
基本症状
这个很奇怪的错误,报错如下:
SyntaxError: Non-ASCII character '\xe6' in file
在.py
脚本里面,有下面的类似语句:
format = "%m月%d日 %H:%M"
重点就是代码中的中文,是这些中文导致了报错。当然,您可以说,删除所有的中文,然后改成英文。但是这种方案并不是可行的。请参考在文件顶部增加如下的shebang
行。主要目的就是声明这个.py
脚本编码为utf8
。
shebang
方案
在文件顶部添加这些注释,就可以声明文件编码为utf-8
,进而识别文件中的中文。
#!/usr/bin/python
# -*- coding: utf-8 -*-
# This Python file uses the following encoding: utf-8
#!/usr/local/bin/python
# coding: utf-8
# coding=utf-8
#!/usr/bin/python
# vim: set fileencoding=utf-8 :
有这么多写法的原因,是因为是否生效,是有个正则表达式来处理的。这个正则表达式是这样的:
^[ \t\f]*#.*?coding[:=][ \t]*([-_.a-zA-Z0-9]+)
相关链接
这个是官方的说明文档:
《python2 中有关文件中文编码的处理方案》
《python3.7如何与python2.7共存?快速切换python版本方案》
总结
问题比较好解决,但是答案有很多样。选择哪个答案做您的解决方案呢?更多python
博客文章,请点击苏南大叔的博客:


