`
xiaobian
  • 浏览: 590660 次
  • 来自: 北京
社区版块
存档分类
最新评论

Python当前的默认编码设置setdefaultencoding

阅读更多
http://hi.baidu.com/dushm/blog/item/95597acb5373431dbe09e6af.html

在Python开发过程中,常常会遇到这样的问题,很让人头疼:
......
print s
......

Traceback (most recent call last):
   File "<stdin>", line 1, in ?
UnicodeDecodeError: 'ascii' codec can't decode byte 0xe4 in position 0: ordinal not in range(128)

究其原因,是想要在屏幕上输出的字符,不符合当前设定终端编码。在上面这个例子中,当前终端的编码设置为ascii,而欲输出的字符为utf-8编码,ascii的每个字符的十进制编码都在0-128以内,当然无法识别utf-8的编码。

要解决这个问题,首先修改终端的字符编码设置:
>>> import sys
>>> sys.getdefaultencoding()
'ascii'

可以看到,当前的默认编码是ascii,要修改这个设置,可以在Python安装目录下的Lib/site-packages目录中,新建一个sitecustomize.py文件(也可以建在其它地方,然后手工导入,建在这里,每次启动Python的时候设置将自动生效),内容如下:
import sys
sys.setdefaultencoding('utf-8') #set default encoding to utf-8

然后可以查看到改变已经生效
>>> import sys
>>> sys.getdefaultencoding()
'utf-8'

此时运行程序,如果仍然报告之前的错误,只需要显示地设定输出的编码
print s.encode('utf-8')
就可以看到正确显示。
分享到:
评论

相关推荐

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

    要设置Python默认编码为UTF-8,一种方法是在Python的安装目录下的`site-packages`或`sitecustomize.py`文件中进行修改。在Unix/Linux系统中,这个文件通常位于`/etc/python2.x/sitecustomize.py`,而在Windows系统下...

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

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

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

    在Python 2中,如果需要改变Python解释器的默认编码(`sys.defaultencoding`),可以使用`sys.setdefaultencoding()`函数,但这是一个非标准的、不推荐的方法。通常,这个函数在Python启动后就被删除,因此需要先...

    python抓取并保存html页面时乱码问题的解决方法

    4. **设置默认编码**:在Python2中,可以通过`sys.setdefaultencoding('utf-8')`设置默认编码为UTF-8。然而,这是不推荐的,因为它可能会引发其他问题。在Python3中,此功能已被移除,因此在Python3中无需设置默认...

    python 文件读写 乱码

    #### 一、Python默认编码 Python默认使用ASCII编码进行字符串的存储和处理。可以通过以下方式查询系统当前的默认编码: ```python import sys print(sys.getdefaultencoding()) ``` 如果希望更改默认编码,可以...

    python 中文乱码 问题深入分析.docx

    在 Python 中,设定默认编码可以使用 sys.setdefaultencoding('gbk'),从而避免乱码问题的出现。但是,需要注意的是,在 Python2.5 中,初始化后会删除 sys.setdefaultencoding 这个方法,所以需要重新载入 sys 模块...

    解决python中 f.write写入中文出错的问题

    在Python 2中,可以通过修改sys模块的默认编码设置,使得解释器在执行文件读写操作时默认使用UTF-8编码。这可以通过调用reload(sys)和sys.setdefaultencoding('utf-8')来实现。然后,即使不显式地使用encode方法转换...

    python 中文乱码问题深化分析.docx

    例如,将默认编码设置为 gbk,可以避免一些编码转换的异常。 四、操作不同文件的编码格式的文件 当我们读取不同编码格式的文件时,需要正确的解码方式。例如,读取一个 ANSI 编码的文件,我们需要使用相应的解码...

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

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

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

    ### Python 实现 Unicode 转中文及转换默认编码的方法 #### 概述 在实际开发过程中,特别是处理网络爬虫时,经常会遇到 Unicode 编码的字符串需要转换为中文的情况。此外,在 Python 2.x 版本中,由于默认编码为 ...

    Python 中文乱码问题深入分析

    如果不指定编码,Python将使用系统默认编码来处理文件,可能会导致乱码的出现。 处理文件时,必须考虑文件的编码声明。在某些文本编辑器,如Windows记事本,保存文件时可能会在文件的开头插入BOM(字节顺序标记),...

    python 中文乱码

    对于Python 2.x版本,可以通过修改`sitecustomize.py`文件来全局设置默认编码;而对于Python 3.x版本,则建议直接利用其内置的Unicode支持功能。在实际应用中,根据具体情况选择合适的方法,可以有效避免中文乱码...

    python2.7的编码问题与解决方法

    然而,Python 2.x 并不推荐使用 `sys.setdefaultencoding()` 来改变默认编码,因为这不是标准的 Python API,可能会引入不稳定性和兼容性问题。但是,如果你必须这样做,可以按照以下方式尝试: ```python import ...

    Python中使用不同编码读写txt文件详解

    9. **Python默认编码**: - Python启动时会设置默认编码,一般在Python2中是ASCII,Python3中是UTF-8。 - 不推荐使用`sys.setdefaultencoding()`来修改默认编码,因为这可能引发错误,特别是在Python2中。 10. **...

    python3编码问题汇总

    可以通过以下代码检查当前环境下的默认编码: ```python import sys print(sys.getdefaultencoding()) ``` ##### 4.6 encode与decode - **encode**: 将字符串编码为字节序列。例如,`"中文".encode('utf-8')`会...

    Python2.7解决中文的方法

    可以使用`sys.setdefaultencoding()`来设置这些流的编码,但此方法仅在Python启动时有效,且非标准API,应谨慎使用。 4. **使用`io`模块**: - Python 2.7的`io`模块提供了更现代的I/O接口,支持Unicode。可以使用...

    python中的编码知识整理汇总

    为了减少这类错误的发生,可以设置Python的默认编码为 `UTF-8`: ```python import sys reload(sys) # 在Python 3中,不再支持reload(sys),可以使用其他方法 sys.setdefaultencoding('utf-8') ``` 需要注意的是,...

Global site tag (gtag.js) - Google Analytics