今天碰到了 python 编码问题, 报错信息如下
Traceback (most recent call last):
  File "ntpath.pyc", line 108, in join
UnicodeDecodeError: 'ascii' codec can't decode byte 0xa1 in position 36: ordinal not in range(128)

显然是当前的编码为ascii, 无法解析0xa1(十进制为161, 超过上限128). 进入python console后, 发现默认编码确实是 ascii, 验证过程为:

>>>import sys
>>>sys.getdefaultencoding()
#输出为ascii.

#在使用 sys.setdefaultencoding('utf8'), 报错!
>>>sys.setdefaultencoding('utf8')
AttributeError: 'module' object has no attribute 'setdefaultencoding'

google 到一个 limodou 回复的帖子, http://www.linuxforum.net/forum/showflat.php?Cat=&Board=python&Number=580942&page=15&view=collapsed&sb=5&o=

limodou讲到, sys.setdefaultencoding 方法在python导入 site.py 后就删除了, 不能再被调用了.  在确定sys已经导入的情况下, 可以reload sys这个模块, 之后, 再 sys.setdefaultencoding('utf8')
>>>reload(sys)
>>>sys.setdefaultencoding('utf8')

确实有效, 根据 limodou 讲解,  site.py 是 python 解释器启动后, 默认加载的一个脚本. 如果使用 python -S 启动的话, 将不会自动加载 site.py.

上面写的挺啰嗦的.

==================================
如何永久地将默认编码设置为utf-8呢?  有2种方法:
==================================
第一个方法<不推荐>: 编辑site.py, 修改setencoding()函数, 强制设置为 utf-8
第二个方法<推荐>: 增加一个名为 sitecustomize.py, 推荐存放的路径为 site-packages 目录下
sitecustomize.py 是在 site.py 被import 执行的, 因为 sys.setdefaultencoding() 是在 site.py 的结尾处被删除的, 所以, 可以在 sitecustomize.py 使用 sys.setdefaultencoding().
#file name:  sitecustomize.py
import sys  
sys.setdefaultencoding('utf-8')

既然 sitecustomize.py 能被自动加载,  所以除了设置编码外, 也可以设置一些其他的东西.

转载于:https://www.cnblogs.com/harrychinese/archive/2012/01/19/change_python_default_encoding.html

修改python默认的编码方式相关推荐

  1. 修改tomcat默认的编码方式

    开发环境搭建前端传中文时编码乱码,操作系统,jvm,idea修改编码格式无效,项目用tomcat搭建的,好久没用tomcat配置都不熟悉了以前都用springboot, 一时间没想出来需要修改tomc ...

  2. python中的编码方式

    说明 这里我们以python2.7为例讲解python的编码方式 指定执行编码方式 python2.7的默认编码方式为ascii字符集,这里所说的编码方式指执行编码方式,在编程过程中,有三个地方都涉及 ...

  3. linux修改python默认版本

    linux修改python默认版本 update-alternatives --config python posted on 2018-05-24 22:42 psycheman 阅读(...) 评 ...

  4. 【Python】python3编码方式encode介绍

    上一篇文章介绍了计算机编码发展历史和编码方式,现在我们聚焦到python语言中,在最新的Python3版本中,字符串是以Unicode编码的,也就是说,Python的字符串支持多语言.例如: prin ...

  5. Python 文件学习----*编码方式*----异常处理----json

    目录 目录 文件的写入模式 文件的写入 文件的读取 read() :用于读取一个文件返回一个字符串 readline() :读取一行 返回一个字符串,并且把指针移动到下一行 readlines() : ...

  6. python更新到什么版本_Linux更新Python版本及修改python默认版本的方法

    linux下更新Python版本并修改默认版本,有需要的朋友可以参考下. 很多情况下拿到的服务器python版本很低,需要自己动手更改默认python版本 1.从官网下载python安装包(这个版本可 ...

  7. 修改android默认锁屏方式

    代码为公司的定制版基于android5.1,没有具体比较锁屏部分应该和原生代码有所不同.本文基于浏览代码结果,没有手机版本和代码版本不一致(APP上还是一脉相承)所以没有在手机上直接试验. 首先在自己 ...

  8. 修改Chrome/Edge浏览器编码方式

    首先这个东西和版本有关,本文用到的 C h r o m e Chrome Chrome 版本为 95.0.4638.54 ( 正 式 版 本 ) ( 64 位 ) 95.0.4638.54(正式版本) ...

  9. Python学习之——编码方式

    1.各种编码方式 ASCII:http://zh.wikipedia.org/zh-hans/ASCIIUnicode:http://zh.wikipedia.org/zh-hans/UnicodeU ...

最新文章

  1. 【Android Protobuf 序列化】Protobuf 简介 ( Protobuf 项目简介 | Protobuf 优缺点分析 )
  2. Aidl进程间通信详细介绍
  3. SQL Server-聚焦在视图和UDF中使用SCHEMABINDING(二十六)
  4. div隐藏select显示的解决办法(就死select挡住了div) 不是网上找到的那五种
  5. python分布式编程_python分布式爬虫中的rules有什么用
  6. JVM原理及调优--网页链接收藏
  7. 普惠AI,将是开发者下一个风口吗?看看他们怎么说
  8. 时区时钟插件html,World Clocks插件,世界时钟Chrome插件,轻松查看各国日期时间...
  9. 含参变量正常积分_含参变量的积分
  10. matlab 股票分时图_matlab画股票走势图 急急急!
  11. java ipv6工具,支持通过IPv6地址和子网大小 计算开始结束地址
  12. android+动态光圈效果,三星S9评测:安卓机皇是你,960帧拍摄+可变光圈
  13. 10个重要的算法C语言实现源代码:拉格朗日,牛顿插值,高斯,龙贝格,牛顿迭代,牛顿-科特斯,雅克比,秦九昭,幂法,高斯塞德尔
  14. html5 css 插入视频,HTML+CSS入门 HTML网页中插入视频各种方法
  15. 在线CHM阅读器(1)——CHM文件格式概述
  16. ckeditor5-vue自定义图片上传函数
  17. 陈情令和明月照我心都有超常镜头,为何前者被原谅,后者被唾弃
  18. 【历史上的今天】12 月 12 日:英特尔创始人出生;PSP 发布;双十二购物狂欢节
  19. 【数字IC/FPFA】时序约束--时钟约束
  20. HTTP/HTPPS协议

热门文章

  1. Linux从零开始(二、基础命令(续三)修改密码)
  2. case when条件表达式
  3. goldengate版本升级( from v10.4 to v11.1.1.1.0.29)
  4. 在虚拟机上为红帽7Linux设置中文输入法
  5. 谈谈一些有趣的CSS题目(十七)-- 不可思议的颜色混合模式 mix-blend-mode
  6. 简单的MYSQL数据库
  7. c++入门之——const在函数名前面和函数后面的区别
  8. HDU 5792 World is Exploding(树状数组+离散化)
  9. python 保存csv文件
  10. python中变量作用域