Python字符串的编码问题
来源:互联网 发布:数学答题软件下载 编辑:程序博客网 时间:2024/06/05 21:51
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符 串str1转换成unicode编码。
encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将unicode编码的字 符串str2转换成gb2312编码。
因此,转码的时候一定要先搞明白,字符串str是什么编码,然后 decode成unicode,然后再encode成其他编码
如果一个字符串已经是unicode了,再进行解码则将出错,因此通常要对其编码方式是否为unicode进行判断:
isinstance(s, unicode)
用非unicode编码形式的str来encode会报错
#!/usr/bin/env python
#coding=utf-8
import sys
print sys.getdefaultencoding()
该段程序在英文WindowsXP上输出为:ascii
在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是由于IDE的结果输出控制台自身不能显示字符串的编码,而不是程序本身的问题。
如在UliPad中运行如下代码:
s=u"中文"
print s
会提示:UnicodeEncodeError: 'ascii' codec can't encode characters in position 0-1: ordinal not in range(128)。这是因为UliPad在英文WindowsXP上的控制台信息输出窗口是按照ascii编码输出的(英文系统的默认编码是 ascii),而上面代码中的字符串是Unicode编码的,所以输出时产生了错误。
将最后一句改为:print s.encode('gb2312')
则能正确输出“中文”两个字。
若最后一句改为:print s.encode('utf8')
则输出:\xe4\xb8\xad\xe6\x96\x87,这是控制台信息输出窗口按照ascii编码输出utf8编码的字符串的结果。
unicode(str,'gb2312')与str.decode('gb2312')是一样的,都是将gb2312编码的str转为 unicode编码
使用str.__class__可以查看str的编码形式
一般说来通用用unicode,文件读写用utf8
- python的字符串、编码问题
- Python字符串的编码问题
- python字符串编码问题
- python字符串编码问题
- python字符串编码问题
- python的字符串的编码问题
- python中文字符串数组编码的问题
- python 2.7的字符串编码问题
- python中文字符串的编码问题
- 关于python字符串编码问题的理解
- Python 字符串和编码问题
- 字符串编码的问题
- 这篇文章讲得比较清楚python的字符串编码问题
- Python编程-字符串的编码转换、存储及乱码问题
- python 2.7输出中文字符串的编码问题
- python的编码问题
- Python的编码问题
- Python 的编码问题
- linux 函数库之 times
- 深度排序与alpha混合
- mysql-定时调用存储过程
- 构造xls表格
- 何谓大数据?
- Python字符串的编码问题
- js 构造函数(construction)与原型(prototype)
- 黑马程序员-iOS基础-Objective-C基础(八)
- 用java语言中API函数Linklist模拟一个堆栈或者队列数据结构
- iOS 之摄像头/相册选取图片
- android 关于Make sure the plugin is properly configured问题的解决办法
- 真正实现兼容IE6以上主流浏览器-上传图片预览
- 在hdfs上存取xml文件的实现代码
- Android Debug