Python编码问题
来源:互联网 发布:密立根油滴实验数据 编辑:程序博客网 时间:2024/06/05 18:36
python里面基本上要考虑三种编码格式:
1 源文件编码
在文件头部使用coding声明。告诉python解释器该代码文件所使用的字符集。
#/usr/bin/python
#coding: utf8
2 内部编码
代码文件中的字符串,经过decode以后,被转换为统一的unicode格式的内部数据,类似于u'*'。unicode数据可以使用encode函数,再自由转换为其他格式的数据,相当于一个统一的平台。
直接输入unicode数据
>>> u'你好'
u'\u4f60\u597d'
将unicode数据转换为gb2312格式
>>> u'你好'.encode('gb2312')
'\xc4\xe3\xba\xc3'
将输入的gb2312格式的数据解码为unicode
>>> '你好'.decode('gb2312')
u'\u4f60\u597d'
输入数据的格式取决于所用shell终端的编码设置,本例中为zh_CN
[root@chenzheng python]# echo $LANG
zh_CN
解码同时转换为utf8
>>> '你好'.decode('gb2312').encode('utf8')
'\xe4\xbd\xa0\xe5\xa5\xbd'
3 外部输入的编码
其实这个和在python交互shell中输入的字符串,所遇到的情况基本一样。但程序中常常用到从网络,文件读取的数据,故此单独列出,需要特别注意其编码格式是否于系统要求相符。
下面是baidu中文本周金曲榜的链接,返回一个xml文件,编码格式为gb2312
http://box.zhangmen.baidu.com/x?op=4&listid=1
由于xml.etree.EelementTree.parse()不识别gb2312编码,在解析的时候,需要将其转换utf8格式才可以,可以使用下面的函数
def read_page(url):
"""读取gb2312编码的xml文件,转换为utf8格式"""
import urllib
udata = urllib.urlopen(url).read().decode('gb2312')
u8data = udata.encode('utf8')
return u8data.replace('gb2312', 'utf-8') #简单替换xml文件第一行的encoding属性值
参考:
http://www.iteye.com/topic/560229
http://www.cnblogs.com/itech/archive/2011/03/28/1997212.html
- python编码问题
- python编码问题
- python编码问题
- Python编码问题
- python编码问题
- python 编码问题
- python的编码问题
- Python编码问题总结
- python 中文编码 问题
- Python 中文编码问题
- python编码问题总结
- Python 中文 编码问题
- python默认编码问题
- Python 编码问题整理
- python字符串编码问题
- python pyscripter编码问题
- python中文编码问题
- python 中文编码问题
- 金额格式化
- android app中如何获取电源锁保持屏幕常亮
- Quartz 2D 函数小结
- java 正则表达式去除标点符号
- 【极客之作】快到极致的Android模拟器——Genymotion
- Python编码问题
- 【openfire插件开发】packet分类路由(职责链模式yes or no)
- ajax快速入门
- Java多线程-线程池
- 弱符号和extern “c”
- 在 360浏览器下 position:relative; 不随着滚动条的滚动而滚动而是飘在页面上 解决方法 给父级也就是出现滚动条的元素添加 position:relative;就ok l了
- linux命令大全
- 关于gdb的几个基本命令
- C++ Excel操作