知识点:计算机中最小的单位是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是为了解决传统的字符编码方案的局限而产生的,它为每种语言中的每一个字符设定了统一而且惟一的二进制编码,规定全部的字符和符号最少由 16 位来表示(2个字节),即:2 **16 = 65536。优化
注:此处说的的是最少2个字节,可能更多。这里还有个问题,使用的字节增长了,那么形成的直接影响就是使用的空间就直接翻倍了。编码
为了解决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