在运行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博客文章,请点击苏南大叔的博客:

如果本文对您有帮助,或者节约了您的时间,欢迎打赏瓶饮料,建立下友谊关系。
本博客不欢迎:各种镜像采集行为。请尊重原创文章内容,转载请保留作者链接。
本站采用创作共用版权协议, 要求署名、非商业用途和相同方式共享。
转载本站内容必须也遵循“署名-非商业用途-相同方式共享”的创作共用协议。
未经许可,规模化镜像抄袭本站内容的行为,将会根据有关法律法规进行维权。
程序如此灵动~》下所有原创文章,如被用于商业用途,请您按规定支付稿费。

 【加群】加入QQ群【175454274】和大家一起讨论这个问题

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

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

本站的忠实读者小伙伴,正在阅读下面这些文章: