我们相信:世界是美好的,你是我也是。平行空间的世界里面,不同版本的生活也在继续...

在运行python脚本的时候,如果脚本里面存在中文的话,就会显示类似错误SyntaxError: Non-ASCII character。本文中,苏南大叔就致力于解决这个字符集的问题。

苏南大叔:python脚本,显示错误SyntaxError: Non-ASCII character - python-no-ascii
python脚本,显示错误SyntaxError: Non-ASCII character(图1-1)

本文测试环境:macpython@2.7.0。整体的解决思路就是在顶部增加个shebang行,区别就在于shebang行的具体内容不一样。方案有好几个,随便选一个合适的就行。据说,只有在python@2系列,才会有这样的问题,以为默认的编码是ASCIIpython@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博客文章,请点击苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。

 【福利】 腾讯云最新爆款活动!1核2G云服务器首年50元!

 【源码】本文代码片段及相关软件,请点此获取更多信息

 【绝密】秘籍文章入口,仅传授于有缘之人   python