unicode码,码制转换问题
来源:互联网 发布:文泰刻绘2009软件安装 编辑:程序博客网 时间:2024/06/14 17:43
理解unicode:
在python里面关于字符串有两个类:str和unicode, 据说python3里面没有了unicode这个类了。
需要注意的是,Unicode只是一个符号集,它只规定了符号的二进制代码,却没有规定这个二进制代码应该如何存储。
也就是说unicode只是一个虚拟的东西,真正的实现方法是有很多的(UTF-8就是在互联网上使用最广的一种unicode的实现方式)。
我想当初为什么区分str和unicode类,可能主要是str表示的字节序列是一个有实际编码方式的字符串,而unicode字符串主要是记录的
是这个字符串在unicode字符集中对应的编号。
eg:
>>> s1="燕子"
>>> u1=u"燕子"
>>> s1
'/xe7/x87/x95/xe5/xad/x90'
>>> u1
u'/u71d5/u5b50'
>>> print s1
燕子
>>> print u1
燕子
>>>
从上面的例子我们可以看出实际上s1字符串的编码方式采用了我们默认的“utf-8”形式
不过这里备注一下,python里面有一个外带的模块chardet可以很方便的实现字符串/文件的编码检测。
chardet官方网址:http://chardet.feedparser.org/
码制问题:
在一般的python环境当中默认的编码是:ascii 默认的中文编码:utf-8
python系统里面提供了一个检测自己的默认码制的函数:sys.getdefaultencoding()查询,当然你也可以在site模块中设置默认的编码
在python当中编码转换一般都是以unicode作为中间转换编码的。
如图:
字符串对象S.decode([encoding[,errors]]):将其他编码形式的字符串S转换成unicode字符码值的ascii码形式
eg:str1.decode('gb2312') 表示将gb2312编码的字符串转换为unicode字符码值的ascii码
字符串对象S.encode([encoding[,errors]]):将字符串对象S的unicode字符码值的ascii码转换为其他编码
eg:str1.encode('gb2312') 表示将unicode字符码值的ascii码转换为gb2312编码的字符串。
上面的decode和encode方法的两个参数encoding和errors的取值情况说明:
encoding参数取值表:
值 描述
'ascii' 7位Ascii码
'latin-1'或'iso-8859-1' ISO 8859-1 Latin-1
'cp1252' Windows 1252编码
'utf-8' 8位变长编码
'utf-16' 16位变长编码
'utf-16-le' UTF-16, 小尾编码
'utf-16-be' UTF-16, 大尾编码
'unicode-escape' 与unicode字面量u"string"相同的格式
'raw-unicode-escape' 与unicode字面量ur"string"相同的格式
errors参数取值表:
值 描述
'strict' 遇到编码和解码错误时,引发UnicodeError异常
'ignore' 忽略无效字符
'replace' 将无效字符替换为一个替换字符(Unicode中的U+FFFD,标准字符串中的'?')
'backslashreplace' 将无效字符替换为python字符转义序列。例如,将字符U+1234替换为'/u1234'
'xmlcharrefreplace' 将无效字符替换为XML字符引用。例如,将字符U+1234替换为'ሴ'
在某些IDE中,字符串的输出总是出现乱码,甚至错误,其实是IDE的结果输出控制台本身不能显示字符串的编码,而不是程序本身的问题。
在python当中判断一个字符串是否是unicode对象,可以使用类似于:isinstance(s,unicode) ---- 判断字节序列s是否是unicode对象
python当中:
unicode(s[,encoding]) 等同于 s.decode([encoding])
eg:
>>> zn="燕子"
>>> print zn
燕子
>>> zn
'/xe7/x87/x95/xe5/xad/x90'
>>> uni_zn=unicode(zn,"utf-8")
>>> print uni_zn
燕子
>>> uni_zn
u'/u71d5/u5b50'
>>> uni_zn.encode("utf-8")
'/xe7/x87/x95/xe5/xad/x90'
>>>
- unicode码,码制转换问题
- 中文转换Unicode码
- Unicode转换中文问题
- unicode码转换,自总结
- unicode码转换成中文
- unicode码转换汉字显示
- unicode 和 ansi转换问题
- UNICODE码到ANSII码的转换
- ANSI码转换成Unicode码
- UNICODE码转换国标2312码
- javascript ASCII码,Unicode码相互转换
- 将Native转换成Unicode码
- 将unicode码转换成字符
- 汉字与unicode码的互相转换
- 如果是UNICODE码 转换成中文
- 汉字和unicode码的转换
- Java 汉子转换为Unicode码
- js unicode码转换成汉字
- 线程处理模型
- 基于前面内存分配器的STL内存分配器
- (转)VC解析XML--使用CMarkup类解析XML
- linux 下各errno的意义
- ie6
- unicode码,码制转换问题
- C#实现串口监听(以中盛来电显示盒为例)
- magento -- Magento CE 1.5.0.1 stable Now Available
- 全国省市数据库
- Session失效的处理办法
- 诺基亚标准:Does your Scrum team pass the Scrum test used at Nokia
- C#中的ref out param关键字
- WPF中的事件及冒泡事件和隧道事件(预览事件)的区别
- Java中各种数据库的来连接