python第一篇:Python 字符串编

Python字符串编码python

字符串编码的前世此生网络

1. 一个字节由8个bit组成,因此1个字节能表示的最大数为255;编码

2. 计算机是美国人发明的,因此一个字节能够表示全部的字符了,因此ASCII就成为美国人的标准编码;spa

3.可是ASCII编码处理汉字是明显不够的,中文不止255个汉字,因此中国制定GB2312编码,用两个字节表示一个汉字,GB2312还把ASCII包含进去了,同理,日文。韩文等等上百个国家为了解决问题都发展了一套字节的编码,标准就愈来愈多,若是出现多种语言混合现实就必定会乱码;code

4.这时候出现了Unicode编码,将全部的标准统一到了一套编码里面;blog

5.那ASCII编码和Unicode编码之间是如何进行转换的?下面是具体的转换方法:内存

  5.1 字母A用ASCII编码表示的十进制是65,二进制即为0100 0001utf-8

  5.2 汉字“中”已经超出了ASCII编码的范围,用Unicode编码十进制是20013 二进制是0100 1110 0010 1101ci

  5.3 A字母用Unicode编码时只须要在前面补上0  即为0000 0000 0100 0001开发

6.乱码问题解决了,可是同时又出现了一个新的问题,若是所有是英文字母的话,Unicode编码比ASCII编码多消耗一倍的内存,同时网络传输的时候也多消耗一倍的带宽;

7.因此这个时候出现了长度可变化的utf-8的编码。

 

字符与字节

1byte = 8bit
1KB = 1024 bytes
1MB = 1024KB
1GB = 1024MB
1TB = 1024GB

ASCII编码: 一个英文字母占据一个字节的空间,一个中文字母占据两个字节的空间;

utf-8编码: 一个英文字符等于一个字节,一个中文(含繁体)等于三个字节。中文标点占据三个字节,英文标点占据一个字节;

Unicode编码: 一个英文等于两个字节,一个中文(含繁体)等于两个字节。中文标点占据两个字节,英文标点占据两个字节。

 

Unicode编码为GB2312编码  utf-8编码 ASCII等编码的一个父级编码,那这些子编码之间子在须要相互转换的时候就须要借助父级编码Unicode。子编码是能够直接转换为父级编码,而后父级编码转换为另外一种类型的子编码。

 

Python2和Python3字符编码存在的问题

获取默认编码格式:

 

>>> import sys
>>> sys.getdefaultencoding()

咱们发如今python2中默认的编码格式是 'ascii' 编码,在python3中默认的编码格式为utf-8

第一步:在终端输入python进入python2的开发环境

第二步:s = "中国"   # 获取s的值拿到  '\xe4\xb8\xad\xe5\x9b\xbd'  说明此时的ASCII编码没法识别汉字

 

Python2和Python3字符编码问题的解决方案

import sys
defaultencoding = 'utf-8'
if sys.getdefaultencoding() != defaultencoding: reload(sys) sys.setdefaultencoding(defaultencoding)
相关文章
相关标签/搜索