`
shirley.ren
  • 浏览: 54095 次
  • 性别: Icon_minigender_2
  • 来自: 北京
社区版块
存档分类
最新评论

Python 设置系统默认编码

阅读更多

python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报这样的错UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128),python没办法处理非ascii编码的,此时需要自己设置将python的默认编码,一般设置为utf8的编码格式。

查询系统默认编码可以在解释器中输入以下命令:

>>>sys.getdefaultencoding()

设置默认编码时使用:

>>>sys.setdefaultencoding('utf8')

 可能会报AttributeError: 'module' object has no attribute 'setdefaultencoding'的错误,执行reload(sys),在执行以上命令就可以顺利通过。

此时在执行sys.getdefaultencoding()就会发现编码已经被设置为utf8的了,但是在解释器里修改的编码只能保证当次有效,在重启解释器后,会发现,编码又被重置为默认的ascii了,那么有没有办法一次性修改程序或系统的默认编码呢。

 

有2种方法设置python的默认编码:

一个解决的方案在程序中加入以下代码:

import sys
reload(sys)
sys.setdefaultencoding('utf8') 

 另一个方案是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:

# encoding=utf8
import sys

reload(sys)
sys.setdefaultencoding('utf8') 

此时重启python解释器,执行sys.getdefaultencoding(),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。

 

另外有一种解决方案是在程序中所有涉及到编码的地方,强制编码为utf8,即添加代码encode("utf8"),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告,我曾经遇到这种情况,错误日志压缩之后尚有70多K,全都是这一个问题,让人有很崩溃的感觉。

2
4
分享到:
评论
2 楼 shirley.ren 2012-05-14  
zcc 写道
按照你的方法设置了,设置成其他的任何编码,shell中“没有任何反应了”
>>> reload(sys)
>>> sys.setdefaultencoding("utf-8")
>>> s
>>> print s
>>> gg

该报错的地方不报错,而且,连打印都不行了?

能不能帮我解释下~


不好意思,不是很明白你的意思,你说的其他编码是指比如gbk或者Latin或者其他的什么编码格式吗?
另外你说的‘shell没有任何反应’我也不是很明白你的意思,能否把你的shell界面截图给我?
1 楼 zcc 2012-03-30  
按照你的方法设置了,设置成其他的任何编码,shell中“没有任何反应了”
>>> reload(sys)
>>> sys.setdefaultencoding("utf-8")
>>> s
>>> print s
>>> gg

该报错的地方不报错,而且,连打印都不行了?

能不能帮我解释下~

相关推荐

    Python设置默认编码为utf8的方法

    主要介绍了Python设置默认编码为utf8的方法,结合实例形式分析了Python针对文件编码的设置方法与相关注意事项,需要的朋友可以参考下

    python3 中文乱码与默认编码格式设定方法

    python默认编码格式是utf-8。在python2.7中,可以通过sys.setdefaultencoding(‘gbk’)设定默认编码格式,而在python3.3中sys.setdefaultencoding()这个函数已经没有了。在python3.3中该如何设置内置的默认编码格式...

    Python获取系统默认字符编码的方法

    下面给出用Python获取系统默认编码的例子: #!/usr/bin/env python #coding=utf-8 """ 获取系统默认编码 """ import sys print sys.getdefaultencoding() 该段程序在英文WindowsXP上输出为: ascii 希望本文所述对...

    python 设置文件编码格式的实现方法

    如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。(python3已经没有这个问题了,python3默认的文件编码是UTF-8) 必须将编码注释放在第一行或者第二行,...

    python支持使用自定义编码的zipfile模块

    python默认的zipfile模块的文件列表只支持cp437和UTF8两种编码,而中文操作系统中zip常使用gbk来存储文件列表,这使得使用python解压zip会乱码,需要读取ZipInfo逐个解压文件并且重命名,并且乱码中可能会出现非法...

    Python实现编码ANSI转UTF8

    Windows文档默认编码是ANSI,Linux文档默认编码是UTF8。项目进行平台移植(Windows—>Linux)时涉及到大量文档编码格式转换,即TXT文档编码ANSI转UTF8。 代码中Python实现了指定目录下TXT文档编码ANSI转UTF8。批量...

    Python字符编码转码之GBK,UTF8互转

    在python 2中默认编码是 ASCII,而在python 3中默认编码是 unicode unicode 分为utf-32 (占4个字节),utf-16(占两个字节),utf-8(占1-4个字节),所以utf-16 是最常用的unicode版本,但是在文件里存的还是utf-8,因为...

    20180530_Python编码及中文乱码1

    ·我们的Python3默认就是Unicode编码编码与解码·Python关于编码和解码对应的函数分别是encode()和decode(),对应编码和解码·pyt

    python实现unicode转中文及转换默认编码的方法

    本文实例讲述了python实现unicode转中文及转换默认编码的方法。分享给大家供大家参考,具体如下: 一、在爬虫抓取网页信息时常需要将类似”\u4eba\u751f\u82e6\u77ed\uff0cpy\u662f\u5cb8″转换为中文,实际上这是...

    浅析Python 字符编码与文件处理

    python2默认的字符编码方式是ASCII python3默认的字符编码方式是Unicode .py文件头部的#coding:utf-8是帮助python识别.py文件的编码方式,故在写.py文件时要注意文件头和文件保存时的编码方式要相同,否则可能会出现...

    Python编码风格指南(中文版)

    1.2 Python 编码风格方面的准则 2. Python 语言方面的准则 2.1 pychecker 2.2 导入模块和包 2.3 完整路径导入 2.4 异常处理 2.5 全局变量 2.6 内嵌/本地/内部类和函数 2.7 List Comprehensions 2.8 默认迭代器和...

    python菜鸟教程.pdf

    print '''hello' world"''', 执⾏结果为 hello'6) world" 2)中⽂编码 Python中默认的编码格式是 ASCII 格式,在没修改编码格式时⽆法正确打印汉字,所以在读取中⽂时会报错。 解决⽅法为只要在⽂件开头加⼊ # -*-...

    基于Python+HTML+MySQL的图书借阅管理系统.zip

    控制台设置库:Sys URL解析库:Urllib 时间库:Time 时间库:Datetime 操作系统库:os 5.3编码方式 前端网页:GBK 服务器端:GBK 数据库:UTF-8 5.4运行环境 服务器:Windows7 SP1旗舰版 + Python...

    python面试题Python2.x和Python3.x的区别

     python2.x:默认编码ASCII编码  python3.x:默认编码UTF-8 3.python3.x没有长整型  python2.x:有长整型long  python3.x:long整数类型被废弃,统一为int 4.打印方式不同  python2.x:print语句,print空格+...

    Python基础课件(共282张PPT).pptx

    Python 第一页,共二百八十二页... 编码方面:Python3.x默认utf-8。 语法方面有改动,数据类型方面有调整。 面向对象、异常处理和模块(mó kuài)等方面也有改动。 本教学使用Python3.5。 Python 下载与安装 Python2.x

    再谈Python中的字符串与字符编码(推荐)

    3.Python中的默认编码 4.Python2与Python3中对字符串的支持 5.字符编码转换 一、前言 Python中的字符编码是个老生常谈的话题,同行们都写过很多这方面的文章。有的人云亦云,也有的写得很深入。近日看到某知名培训...

    python实现文件批量编码转换及注意事项

    在不改变系统默认编码的前提下,用python将’.c’和’.h’文件的编码转换保存新的文件夹,其余文件原封不动复制。 import os abspath = "/home/fanghaoyu/桌面/libraries/" # 新文件夹的路径 try: os.makedirs...

    python3字符串

    python3字符串,python3字符串,

Global site tag (gtag.js) - Google Analytics