码迷,mamicode.com
首页 > 编程语言 > 详细

Python Unicode编码之基础知识

时间:2016-04-15 11:57:35      阅读:1038      评论:0      收藏:0      [点我收藏+]

标签:

一、什么是Unicode  

  在Unicode之前,人们使用ASCII码,即每个英文字符都是以7位二进制数的方式存储在计算机内,其范围是32-126,所以ASCII码字符只能表示95个可打印字符;虽然随后将位数扩展值了8位,但依旧最多只能表示233个字符,对于成千上万的非欧洲语系的语言来说有极大的限制。

  Unicode通过使用一个或多个字节来表示一个字符的方法,突破了ASCII的限制,可以表示超过90000个字符。

二、怎么使用Unicode

  从1.6版本起引进了Unicode字符串支持,用来转换多种双字节字符的格式、编码以及操作管理。为了让Unicode和ASCII码值的字符串看起来尽可能的相像,Python的字符串从原来的简单数据类型改为真正的对象,即ASCII字符串成了StringType型,而Unicode字符串成了UnicodeType型。

  内建的str()函数和chr()函数并没有升级成可以处理Unicode。它们只能处理常规的ASCII编码字符串。如果一个Unicode字符串被作为参数传递给了str()函数,它会先被转换成ASCII字符串,然后再交个str()函数;如果Unicode字符串中包含任何不被ASCII字符串支持的字符,会导致str()函数报异常。

  Python默认所有字面上的字符串都用ASCII编码,可以通过在字符串前面加一个‘u‘前缀的方式声明Unicode字符串;也可以使用内建的unicode()和unichar()函数把任何Python的数据类型转换成Unicode字符串,如果是对象,并且该对象定义了‘__unicode__()‘方法,还可以把该对象转换成相应的Unicode字符串。

三、Unicode在实际应用中的注意事项

  1.程序中出现字符串时一定要加个前缀‘u‘;

  2.用unicode()函数代替str()函数;

  3.尽量不要使用过时的string模块;

  4.不到必须时不要在你的程序里编解码unicode字符,只有在你写入文件或者数据库或者网络时,才调用encode()函数;相应的在读取数据的时候才调用decode()函数;

  5.Python 标准库里面的绝大多数模块都是兼容Unicode的,除了pickle模块,该模块只支持ASCII字符串,因此在使用时要小心;

  6.如果你的程序里使用第三方模块,要确保各模块均能统一使用Unicode;

  7.在每个应用开发前,先要考虑使用的语言,然后明确统一的编码方式;

 

Python Unicode编码之基础知识

标签:

原文地址:http://www.cnblogs.com/AngryZe/p/5394785.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!