ASCII
(American Standard Code for Information Interchange)编码不能表示汉字中文
GB2312
GB2312 是对 ASCII 的中文扩展。
GBK
GB2312的基础上扩展,增加了近20000个新的汉字(包括繁体字)和符号。
GB18030
GBK的基础上扩展,又加了几千个新的少数民族的字。
UNICODE
ISO(国际标谁化组织)制订。统一包含所有国家的编码。是一种字符集,不属于编码。
UTF-8
解决unicode在互联网的传输问题,每次8个位传输数据,是unicode的一种实现方式。
为传输而设计的编码,并使编码无国界,这样就可以显示全世界上所有文化的字符了。
提示 :
windows cmd 窗口下不支持utf-8,想要显示中文必须转换为gbk或者unicode。
在 Python idle 和 cmd 下直接输入 s = "中文"会以 gbk 编码的。
而 Python idle 中这三种编码都支持。
中文乱码的出现都是由于编码不一致导致的,存储的是用utf-8,打印的时候用gbk就会乱码了,所有要保证不乱码尽量保持统一,建议全部使用unicode。
设置编码
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
不同编码之间不能直接转化,先转换为unicode。
raw_input提示字符串只能为gbk编码
chardet 可以查看字符串编码格式。
>>> import chardet
>>> chardet.detect('abc123')
{'confidence': 1.0, 'encoding': 'ascii'}
>>> chardet.detect('中国')
{'confidence': 0.7525, 'encoding': 'utf-8'}