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

Python基础--数据类型

时间:2017-09-16 11:58:12      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:数据类型   python   

很明显,我们平时在使用计算机时,用的都是人类能读懂的字符(用高级语言编程的结果也无非是在文件内写了一堆字符),如何能让计算机读懂人类的字符? 

   必须经过一个过程:    

字符--------(翻译过程)------->数字     

这个过程实际就是一个字符如何对应一个特定数字的标准,这个标准称之为字符编码。


字符编码种类:

ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit,8bit可以表示0-2**8-1种变化,即可以表示256个字符

ASCII最初只用了后七位,127个数字,已经完全能够代表键盘上所有的字符了(英文字符/键盘的所有其他字符)

后来为了将拉丁文也编码进了ASCII表,将最高位也占用了


GBK:为了满足中文,中国人定制了GBK 。GBK:2Bytes代表一个中文字符,1Bytes表示一个英文字符。为了满足其他国家,各个国家纷纷定制了自己的编码 。

日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里。

Unicode:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的文本中,显示出来会有乱码。

于是产生了unicode(定长),统一用2Bytes代表一个字符,虽然2**16-1=65535,但unicode却可以存放100w+个字符,因为unicode存放了与其他编码的映射关系,准确地说unicode并不是一种严格意义上的字符串编码表.而是映射表。

UTF-8:于是产生了UTF-8(可变长),对英文字符只用1Bytes表示,对中文字符用3Bytes,对其他生僻字用更多的字节Bytes去存。



需要强调的是:  

毫无疑问utf-8比unicode更节省空间,而且都能兼容万国,那为何不全部采用utf-8呢?  

其一:如果我们能统一全世界,废除所有现有的计算机编码体系,然后大一统都采用utf-8,那么乱码问题将不复存在,很明显很多地方仍会采用各种各样的编码,这是历史遗留问题。因而我们必须寻求一种与全世界的编码都有映射关系的解决方案,这就是unicode,而utf8是没有与其他编码的映射关系的。 

其二:内存中统一采用unicode,浪费空间来换取可以转换成任意编码(不乱码),硬盘可以采用各种编码,如utf-8,保证存放于硬盘或者基于网络传输的数据量很小,提高传输效率与稳定性。

Python基础--数据类型

标签:数据类型   python   

原文地址:http://11368245.blog.51cto.com/11358245/1965696

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