python学习---字符编码

字符编码

python解释器在加载.py文件中的代码时,会对内容进行编码(默认是ascII)

二进制

256 128 64 32 16 8 4 2 1
1 1 1 1 1 1 1 1 1

二进制与字符串进行转换就要用到字符编码

ASCII(Americal Standard Code for Information Interchange)美国标准信息交换代码 ,是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧语言,其最多能用8位来表示一个字节,即:2**8=256-1,所以,Ascll码最多只能表示255个符号

1980年GB2312一共收录了7445个字符,包括6763个汉子和682个其他符号

1995年GBK1.0收录了21886个符号,它分为汉字区和图像符号区,汉字包括21003个字符。

2000年GB18030取代了GBK1.0,并收录了27484个汉子,同时还收录了藏文、蒙文、维吾尔文等主要的少数民族文字。现在的PC平台必须支持GB18030,对嵌入式产品暂不做要求。所以手机、MP3一般支持GB2312

通常我们还是用GBK指代中文windows内码

显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode

Unicode(统一码、万国码、单一码)是一种计算机上使用的字符编码。Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽然有的字符和符号最少由16位来表示(2个字节)即2**16=65536

注意:此处说的最少2个字节,可能更多

UTF-8, 是对Unicode编码的压缩和优化,它不再使用最少使用2个字节,而是将所有的字符和符号进行分类

ASCII码中的内容用1个字节保存,欧洲的字符用2个字节保存,东亚的字符用3个字节保存

所以,python解释器在加载.py文件中的代码时,会对内容进行编码(默认ascii)如果如下代码的话

报错:ascii码无法表示中文

#!/usr/bin/env python
print('你好,世界')

改正,应该显示告诉python解释器,用什么编码来执行源代码,如

#!/usr/bin/env python
# -*-  coding: utf-8 -*-
print('你好,世界')

下面的图片就解释了编码的发展史,如图

 

 

 

 

 

 

 

 

 

 

 

 

 

 

注意:在python2中不支持中文输入,在python3中支持中文

比如,下图就是在python2中执行的结果,报错了

 

 

 

 

 

 

 

之后,在文件顶部指定编码格式就可以了 # -*- coding:utf-8 -*-,如图

posted @ 2019-08-16 15:02  ommph  阅读(219)  评论(0编辑  收藏  举报