自学Python之路

自学Python1.5-Centos内python2识别中文

方法一,python推荐使用utf-8编码方案

经验一:在开头声明:

# -*- coding: utf-8 -*-
当然,也可以写成:
# coding:utf-8

经验二:遇到字符(节)串,立刻转化为unicode,不要用str(),直接使用unicode()

unicode_str = unicode('中文', encoding='utf-8')
print unicode_str.encode('utf-8')

经验三:如果对文件操作,打开文件的时候,最好用codecs.open,替代open(这个后面会讲到,先放在这里)import codecs

codecs.open('filename', encoding='utf8')

经验四:声明字符串直接加u,声明的字符串就是unicode编码的字符串

a = u"中"

经验五: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代码

>>>sys.getdefaultencoding() 

设置默认编码时使用: Python代码

>>>sys.setdefaultencoding('utf8')  

可能会报

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

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

方法二 :设置python的默认编码

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

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

另一个方案是在/usr/local/lib/python.27/site-packages或者/usr/lib/python2.7下新建一个sitecustomize.py,内容为: Python代码, 两个路径的原因是因为系统不同的原因,debian和ubuntu存放的目录是后者,其他没有测试。

# encoding=utf8 

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

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

方法三:解决方案是在程序中所有涉及到编码的地方,强制编码为utf8,即添加代码encode("utf8"),这种方法并不推荐使用,因为一旦少写一个地方,将会导致大量的错误报告.

........

更多相关文章

  1. 计算机视觉相关代码片段(Python)
  2. 120行python代码解锁10000分微信跳一跳
  3. XGBoost中参数调优的完整指南(含Python-3.X代码)
  4. 求助:Python是否可以用一行代码来同时给变量赋值并打印变量的值
  5. 长安铃木经销商爬取(解析xml、post提交、python中使用js代码)
  6. 怎样写贪吃蛇小游戏?用100行python代码轻松解决!
  7. 建模分析之机器学习算法(附python&R代码)
  8. 读取python中的unicode文件,该文件以与python源代码相同的方式声
  9. 自动完成在VS代码和Python中的自动化对象

随机推荐

  1. java微信小程序解密AES/CBC/PKCS7Padding
  2. 包含带标记的值的XML属性文件
  3. JAVA实现排序-冒泡排序-优化冒泡排序
  4. 不幸的是,在声明按钮时,模拟器中出现了错误
  5. spark seq.max 报错 Caused by: java.lan
  6. 排序算法之 Java简单快速排序算法
  7. Java正则表达式提取字符
  8. Map集合的使用
  9. Java错误:线程“main”中的异常java.lang.
  10. 使用android nfc api写NFC tag信息