Python 设置系统默认编码 转

解决UnicodeEncodeError: ‘ascii‘ codec can‘t encode characters in position 问题(转)

本文转载自:http://blog.csdn.net/intel80586/article/details/8566057

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

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

Python代码

  1. >>>sys.getdefaultencoding()

设置默认编码时使用:

Python代码

  1. >>>sys.setdefaultencoding(’utf8’)

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

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

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

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

Python代码

  1. import sys
  2. reload(sys)
  3. sys.setdefaultencoding(’utf8’)

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

Python代码

  1. # encoding=utf8
  2. import sys
  3. reload(sys)
  4. sys.setdefaultencoding(’utf8’)

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

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

另外:1. 当字符串里有 \n、\t、\r时,json.loads()失效,异常,要去掉;
2. 在操作数据库的时候用到 BasicDataSource 时,可以通过设置characterEncoding来解决中文乱码的问题,
BasicDataSource connPool;connPool.addConnectionProperty("characterEncoding", "UTF-8");;

转自:http://www.cnblogs.com/softidea/p/5198657.html

时间: 2024-10-12 13:44:48

Python 设置系统默认编码 转的相关文章

Python 设置系统默认编码

有2种方法设置python的默认编码: 一个解决的方案在程序中加入以下代码: import sys   reload(sys)   sys.setdefaultencoding('utf8') 另一个方案是在python的Lib\site-packages文件夹下新建一个sitecustomize.py,内容为: # encoding=utf8   import sys      reload(sys)   sys.setdefaultencoding('utf8')

手动设置系统默认程序版本(可以替换系统自带同名程序)

在root下一切正常,在当前用户下就出现了问题.如下所示: [email protected]:/usr/local$ java -version 程序“java”已包含在下列软件包中: * gcj-4.4-jre-headless  * openjdk-6-jre-headless  * cacao  * gij-4.3  * jamvm 请尝试:sudo apt-get install <选定的软件包> 解决方法:(手动设置系统默认JDK) 在终端中依次输入命令: jdk1.6.0_26

IOS编程中设置系统默认语言的方法

1. 创建新的语言包 ---文件名必须为:Localizable.strings 之后选中Localizable.strings文件,在Utilites中,点击Localizable选项 设置语言 2. 在info.plist 文件中系统默认语言 2. 设置运行时的语言(参考开发者文档 :Testing Specific Languages and Regions) 方法:Product->Scheme->Edit Scheme 在选择Options下的 Application languag

[Linux] 修改系统默认编码

locale 命令 locale 命令用以设置程序运行的语言环境. locale 设置语言环境的命名规则为 Language_area.charset,例如 en_US.utf8 表示语言为英语,地区为美国,字符集为 UTF-8. 查看当前字符映射文件 $ locale charmapUTF-8 查看可用公共语言环境 $ locale -a C C.UTF-8 en_AG ... 查看可用字符映射文件 $ locale -a C C.UTF-8 en_AG ... 设置默认编码 编辑 ~/.ba

重装eclipse要做的事(二)---设置工作空间默认编码

在Eclipse的开发使用中,我们经常使用的是UTF-8,但是刚刚安装的或者是导入的项目是其他编码的默认是GBK的,这就造成我们的项目乱码,一些中文解析无法查看,对我们的开发造成不便. 我使用的是Myeclipse2014 修改默认编码 在菜单导航栏上Window-->Preferences 打开"首选项"对话框,左侧导航树,导航到 General-->Workspace 如果要修改某一类文件的默认编码,比如*.java,*.jsp,那么 导航栏window-->pr

centos7 设置系统默认启动的界面

系统默认 以某种方式启动 使用systemd创建符号链接指向默认运行级别. 修改方法为:在root下 1.首先删除已经存在的符号链接rm /etc/systemd/system/default.target----------------------------------------------------------------------------------2.默认级别转换为3(DOS模式)ln -sf /lib/systemd/system/multi-user.target /et

本地化语言-设置系统默认为中文

1. 2. 3.

eclipse设置项目默认编码

Window->Preferences->General->Workspace->Text file encoding

python设置utf-8为默认编码

当使用Python编程时,编码问题一直很让人头疼,程序中经常会碰到如下错误提示: UnicodeDecodeError: 'ascii' codec can't decode byte 0x?? in position 1: ordinal not in range(128) 这是由于python在安装时,默认的编码是ascii,当程序中出现非ascii编码时,python的处理常常会报上面的错误. 对于上面问题,一般有2种处理方法: 方法1: 在python代码开头加上如下代码块: [pyth