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.getdefaultencoding()
设置默认编码时使用:
- >>>sys.setdefaultencoding('utf8')
>>>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')
import sys
reload(sys)
sys.setdefaultencoding('utf8')
另一个方案是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为:
-
-
import sys
-
- reload(sys)
-
sys.setdefaultencoding('utf8')
# encoding=utf8
import sys
reload(sys)
sys.setdefaultencoding('utf8')
此时重启python解释器,执行sys.getdefaultencoding(),发现编码已经被设置为utf8的了,多次重启之后,效果相同,这是因为系统在python启动的时候,自行调用该文件,设置系统的默认编码,而不需要每次都手动的加上解决代码,属于一劳永逸的解决方法。
另外有一种解决方案是在程序中所有涉及到编码的地方,强制编码为utf8,即添加代码encode("utf8"),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告,我曾经遇到这种情况,错误日志压缩之后尚有70多K,全都是这一个问题,让人有很崩溃的感觉。
分享到:
相关推荐
要设置Python默认编码为UTF-8,一种方法是在Python的安装目录下的`site-packages`或`sitecustomize.py`文件中进行修改。在Unix/Linux系统中,这个文件通常位于`/etc/python2.x/sitecustomize.py`,而在Windows系统下...
python默认编码格式是utf-8。在python2.7中,可以通过sys.setdefaultencoding(‘gbk’)设定默认编码格式,而在python3.3中sys.setdefaultencoding()这个函数已经没有了。在python3.3中该如何设置内置的默认编码格式...
下面给出用Python获取系统默认编码的例子: #!/usr/bin/env python #coding=utf-8 """ 获取系统默认编码 """ import sys print sys.getdefaultencoding() 该段程序在英文WindowsXP上输出为: ascii 希望本文所述对...
如果要在python2的py文件里面写中文,则必须要添加一行声明文件编码的注释,否则python2会默认使用ASCII编码。(python3已经没有这个问题了,python3默认的文件编码是UTF-8) 必须将编码注释放在第一行或者第二行,...
在处理包含非英文字符(如中文、日文等)的文件时,如果不了解文件的编码格式,直接使用默认编码进行读取可能会导致错误的结果。例如,如果一个文件使用的是`GB2312`编码,但你使用`UTF-8`编码去读取它,那么文件中...
python默认的zipfile模块的文件列表只支持cp437和UTF8两种编码,而中文操作系统中zip常使用gbk来存储文件列表,这使得使用python解压zip会乱码,需要读取ZipInfo逐个解压文件并且重命名,并且乱码中可能会出现非法...
- 遵循Python的默认行为,即在不同的逻辑单元之间自然地使用换行符进行分割。 #### 三、行长度 **知识点:** - **最大行长度为80个字符:** 为了保持良好的可读性,建议每行代码不超过80个字符。 - **例外情况:**...
PEP8编码规范,全称为“Style Guide for Python ...总之,PEP8编码规范是为了使Python代码更加优雅、一致和可维护,尽管有时需要根据实际情况灵活变通,但它是Python社区默认的编码风格指南,得到了广泛的认可和应用。
总的来说,Python 2.7中的编码问题是一个复杂但重要的主题,开发者需要理解字符串类型、字符编码、操作系统默认编码以及Python解释器的默认编码之间的关系,以避免出现乱码和解析错误。正确地处理编码和解码是编写可...
这是Python 3默认的字符串编码方式,能够支持多种语言和特殊字符,非常适合国际化项目。 #### 四、导入 合理组织和管理导入语句同样重要: - **按照标准库、第三方库、本地模块的顺序排列导入语句**。 - **避免...
在 Python 中,默认的缩进符号是四个空格,避免使用 Tab 键。 Tab 键还是空格 在 Python 中,Tab 键和空格都是可以使用的缩进符号,但是为了避免混乱,建议使用四个空格作为缩进符号。 行的最大长度 代码行的最大...
Google Python 编码规范 本文档是 Google 公司的 Python 编码规范,旨在为 Python 程序员提供一个详细的编码风格指南。该指南涵盖了 Python 语言规则、 Python 风格规则、代码编写风格、注释、类、字符串、TODO ...
解决办法是将Python的默认编码设置为UTF-8,例如: ```python import io import sys sys.stdout = io.TextIOWrapper(sys.stdout.buffer, encoding='utf-8') ``` 四、文件与网络资源的编码处理 - 本地文件编码:在...
特别是在使用Python进行开发时,由于不同的操作系统默认编码方式不同,以及Python自身对源文件编码的处理机制,很容易导致中文乱码的问题。本文将深入探讨Python中的字符编码原理,并提供解决中文乱码问题的有效方法...
Windows文档默认编码是ANSI,Linux文档默认编码是UTF8。项目进行平台移植(Windows—>Linux)时涉及到大量文档编码格式转换,即TXT文档编码ANSI转UTF8。 代码中Python实现了指定目录下TXT文档编码ANSI转UTF8。批量...