当前位置:首页 > python > 正文内容

python2.x版本中文导致编译失败

xuwenyan2年前 (2021-02-24)python85

使用python写代码时,代码中常常需要一些中文,比如输出一些提示信息可能需要是中文的,比较醒目。但是python2.x版本默认编码格式是ascii,检测到非ascii字符时就会报错(UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128)),这时我们就需要修改python的默认编码格式为utf8,这样就能很好的兼容中文了。

第一种修改python默认编码格式的方法:

def set_default_encoding_utf8():
  reload(sys)
  sys.setdefaultencoding('utf-8')

if __name__ == '__main__':
  set_default_encoding_utf8()

第二种修改python默认编码格式的方法是在python安装目录下Lib\site-packages文件夹新建一个sitecustomize.py文件,python编译器启动时会自动调用sitecustomize.py文件从而修改默认编码格式。这是一种一劳永逸的方法,以后不需要在每个python文件中加入第一种方法了,sitecustomize.py代码内容如下:

# encoding=utf8
import sys  
reload(sys)  
sys.setdefaultencoding('utf8')

还有一点需要特别注意的是,当你的代码里面有中文注释时,需要在python文件头部注明编码格式:# encoding=utf8,而且python文件存储格式必须和声明的一致。

    文章作者:xuwenyan
    版权声明:本文为本站原创文章,转载请注明出处,非常感谢,如版权漏申明或您觉得任何有异议的地方欢迎与本站取得联系。

    扫描二维码推送至手机访问。

    版权声明:本文由艺文笔记发布,如需转载请注明出处。

    本文链接:https://www.xuwenyan.com/archives/287

    分享给朋友:

    “python2.x版本中文导致编译失败” 的相关文章

    python获取svn最新版本号

    python获取svn最新版本号

    这个我自己遇到的一个需求,就是在打包软件的时候需要记录一下当前的svn版本号,以方便以后追述每个软件版本对应的程序代码。下面的代码亲测有效,希望可以给你提供思路。 def GetSvnHeadRevision(work_path): current_work_path =&nb...

    python多进程与多线程分析与使用(一)

    python多进程与多线程分析与使用(一)

      进程是一个执行中的程序,每个进程有自己的地址空间、内存、数据栈以及其他用于跟踪执行的辅助数据。操作系统管理其上所有进程,并合理分配时间。进程也可以通过fork或spawn派生新的进程,每个新进程有自己的内存数据栈,所以只能采用进程间通信(IPC)的方式共享信息。  多线程模块:...

    python多进程与多线程分析与使用(三)

    python多进程与多线程分析与使用(三)

    操作系统是可以并行运行多个任务的。比如你一边听歌,一边玩游戏一样。现在的cpu大都是多核的,但即使是过去的单核cpu也是支持多任务并行执行。   单核cpu执行多任务的原理:操作系统交替轮流地执行各个任务。先让任务1,一段时间后切到任务2、任务3...,这样往复地执行下去。由...

    python多进程与多线程分析与使用(四)

    python多进程与多线程分析与使用(四)

    在上一节中,学习了Python多进程编程的一些基本方法:使用跨平台多进程模块multiprocessing提供的Process、Pool、Queue、Lock、Pipe等类,实现子进程创建、进程池(批量创建子进程并管理子进程数量上限)以及进程间通信。这一节学习下Python下的多线程编程方法。一、t...

    Python如何打包成可执行程序exe直接运行?

    Python如何打包成可执行程序exe直接运行?

    Python如何打包成可执行程序exe直接运行? 安装pyinstaller 首先安装pyinstaller,使用安装命令:pip3 install pyinstaller,如下图所示。 Pyinstaller打包exe 1:直接打开cmd到脚本目录下,执行命令:p...