首页 > 学院 > 开发设计 > 正文

python2的编码问题

2019-11-14 16:54:59
字体:
来源:转载
供稿:网友

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 -*- 参考链接点我

发表评论 共有条评论
用户名: 密码:
验证码: 匿名发表