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

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

xuwenyan3年前 (2021-02-24)python294

使用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多进程与多线程分析与使用(一)

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

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

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

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

    1、使用多线程可以有效利用CPU资源,线程享有相同的地址空间和内存,这些线程如果同时读写变量,导致互相干扰,就会产生并发问题,为了避免并发问题,绝不能让多个线程读取或写入相同的变量,因此python中使用了全局锁(GIL),此锁只有一个,当某线程执行某个函数时,其他线程不能同时执行,直到锁被释放(...

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

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

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

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

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

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

    Python常用方法整理(路径、文件、编码格式等)

    Python常用方法整理(路径、文件、编码格式等)

    获得工作路径import os work_path = os.getcwd()设置工作路径import os os.chdir('d:\\test')获取脚本所在路径import os current_path =&n...