python2的编码问题

王朝学院·作者佚名  2016-08-27
窄屏简体版  字體: 小  |  中  |  大  |  超大  

ascii --> unicode --> utf-8

ascii:最早的,容量最小的编码方式。1个字节表示一个字符。

unicode:加入多国字符,一般是2个字节表示一个字符,偏僻字用4个字节。缺点:浪费存储空间。

utf-8:为了解决浪费空间的问题,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有很生僻的字符才会被编码成4-6个字节。在计算机内存中,统一使用Unicode编码。当需要保存到硬盘或者需要传输的时候,可以转换为UTF-8编码。

1.Python的诞生比Unicode标准发布的时间还要早,所以最早的Python只支持ASCII编码

Python内建的ord()和chr()函数,可以把字母和对应的数字相互转换:

>>> ord('A')

65

>>> chr(65)

'A'

2.Python在后来添加了对Unicode的支持,以Unicode表示的字符串用u'...'表示

>>> u'中'

u'\u4e2d'

\u后面是十六进制的Unicode码。

3.unicode --> utf-8

>>> u'ABC'.encode('utf-8')

'ABC'

>>> u'中文'.encode('utf-8')

'\xe4\xb8\xad\xe6\x96\x87'

英文字符转换后表示的UTF-8的值和Unicode值相等(但占用的存储空间变小,2个字节变为1个字节),而中文字符转换后1个Unicode字符转化为UTF-8字符后,两个字节变为3个字节。用len()函数显示,从1个字符长度变为3个字符。

>>> len(u'中')

1

>>> len(u'中'.encode('utf-8'))

3

4.utf-8 --> unicode

>>> 'abc'.decode('utf-8')

u'abc'

>>> test = '\xe4\xb8\xad\xe6\x96\x87'.decode('utf-8')

u'\u4e2d\u6587'

>>>PRint test

中文

如何保存文件保存:Python源代码也是一个文本文件,所以,当你的源代码中包含中文的时候,在保存源代码时,就需要务必指定保存为UTF-8编码。

读取:当Python解释器读取源代码时,为了让它按UTF-8编码读取,我们通常在文件开头(第一行或第二行)写上这一行行# -*- coding: utf-8 -*-参考链接点我

 
 
免责声明:本文为网络用户发布,其观点仅代表作者个人观点,与本站无关,本站仅提供信息存储服务。文中陈述内容未经本站证实,其真实性、完整性、及时性本站不作任何保证或承诺,请读者仅作参考,并请自行核实相关内容。
 
© 2005- 王朝網路 版權所有 導航