从零开始的Linux运维屌丝之路,资源免费分享平台   运维人员首选:简单、易用、高效、安全、稳定、社区活跃的开源软件
  • 首页
  • Python
  • 9、Python字符编码以及字符编码扩展知识

9、Python字符编码以及字符编码扩展知识

发布:蔺要红04-05分类: Python

一:二进制转换
二:ASCII码与二进制转换(计算机如何把二进制转化成文字)
三:字符编码的演化(如何支持中文)
四:总结python字符编码


一、二进制转换
342
  512    256  128   64  32  16   8   4   2   1
#         1    0     1   0   1   0   1   1   0   

1代表需要+
0代表不需要+
342    =    256  +   64  + 16  + 4 + 2
100
  64  32  16   8   4   2   1
# 1    1   0   0   1   0   0

298 
  256  128  64  32  16  8  4  2  1
#  1    0   0   1   0   1  0  1  0
>>> bin(342)
'0b101010110'
>>> bin(100)
'0b1100100'
>>> bin(298)
'0b100101010'
二、ASCII和十进制和二进制之间的转换


三:字符编码的演化(如何支持中文)

1、中国就发明了自己的对照表用来支持中文、后来台湾、日本、韩国等等国家都出现了自己的对照表、用来识别自己的语言。
2、为了解决每个国家不同编码之间不想互通的问题ISO标准组织出马了!
出了Unicode编码:
但是对比之前的ASCII码、有缺陷,占用的空间会浪费、本来一个英文字母占用1b、导致占用2b!
所以ISO标准组织吗又出了UTF-8



四、总结Python字符编码

python解释器在加载 .py 文件中的代码时,
会对内容进行编码(默认ascillASCII(American Standard Code for InformationInterchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,
主要用于显示现代英语和其他西欧语言,其最多只能用 8 位来表示(一个字节),即:2**8 = 256-1,所以,ASCII码最多只能表示 255 个符号。显然ASCII码无法将世界上的各种文字和符号全部表示,所以,就需要新出一种可以代表所有字符和符号的编码,即:Unicode Unicode(万国码)是一种在计算机上使用的字符编码。
Unicode 是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每个字符设定了统一并且唯一的二进制编码,规定虽有的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536.
UTF-8,是对Unicode编码的压缩和优化,他不再使用最少使用2个字节,而是将所有的字符和符号进行分类:ascii码中的内容用1个字节保存、欧洲的字符用2个字节保存,东亚的字符用3个字节保存...
所以,python解释器在加载 .py 文件中的代码时,会对内容进行编码(默认ascill),如果是如下代码的话:

[root@test01 ~]# cat 2.py 
#/usr/bin/env python
name = "你好,世界"
print (name)
报错:ascii码无法表示中文
[root@test01 ~]# python2 2.py 
  File "2.py", line 2
SyntaxError: Non-ASCII character '\xe4' in file 2.py on line 2, but no encoding declared; see http://www.python.org/peps/pep-0263.html for details

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

[root@test01 ~]# cat 1.py 
#!/usr/bin/env python
#-*- coding: utf-8 -*-
name = "你好,世界"
print (name)
[root@test01 ~]# python2 1.py 
你好,世界
python2中的文件默认编码为:ASCII                                                                                      
python2中字符串(内存里)的默认编码也是 ASCII码    
备注:如果文件头声明了gbk,那字符串(内存里)的编码也是gbk


ython3中的文件默认编码为:utf8、所以python默认支持中文、                                           
 python3中字符串(内存里)的默认编码是unicode


上文中的例子中用python2打印中文报错、就是因为ASCII码不支持中文

 
温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,如有侵权我会在24小时之内删除!

欢迎使用手机扫描访问本站