python笔记:字符编码

ASCII编码

知识点:计算机中最小的单位是bit,bit就我们常说一位二进制,一位二进制要么是0 要么是 1。可是bit这个单位过小了,咱们用字节(byte)来表示。换算的规则以下:html

8b = 1B      #小b=bit ; 大B=byte
1024B = 1KB
1024KB = 1M
1024M = 1G
1024G = 1T 

在存储英文的时候咱们至少须要1个字节(一个字母),就是8位(bit),看下ASCII表中1个字节就能够表示全部的英文所须要的字符,那你会发现1个字节8位,他能存储的最大数据是2的8次方-1 = 255,一个字节最多能表示255个字符。大数据

 

Unicode编码(统一码、万国码、单一码)

国际互联网组织提出的Unicode ”万国编码”,Unicode是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每一个字符设定了统一而且惟一的二进制编码,规定全部的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536优化

 注:此处说的的是最少2个字节,可能更多。这里还有个问题,使用的字节增长了,那么形成的直接影响就是使用的空间就直接翻倍了。编码

 

UTF-8编码

为了解决Unicode占用空间问题就出现了UTF-8编码,是对Unicode编码的压缩和优化,他再也不使用最少使用2个字节,而是将全部的字符和符号进行分类:spa

1)ascii码中的内容用1个字节保存code

2)欧洲的字符用2个字节保存htm

3)东亚的字符用3个字节保存。blog

 

字符转码

一、Python3中默认就是unicode编码。token

#-*- coding:utf-8 -*-

tim = '你好'
#unicode转为UTF-8编码
print(tim.encode('UTF-8'))
#unicode转为GBK编码
print(tim.encode('GBK'))

 

二、Python2.X中默认是ASCII编码,你在文件中指定编码为UTF-8,可是UTF-8若是你想转GBK的话是不能直接转的,的须要Unicode作一个转接站点。utf-8

#-*- coding:utf-8 -*-

tim = '你好' print chardet.detect(tim) #UTF-8先解码为Unicode编码,而后再从Unicode编码为GBK new_tim = tim.decode('UTF-8').encode('GBK') print chardet.detect(new_tim)

 

参考:https://www.cnblogs.com/luotianshuai/articles/5735051.html

相关文章
相关标签/搜索