一些关于编码的问题

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'}

发布了7 篇原创文章 · 获赞 0 · 访问量 1137

猜你喜欢

转载自blog.csdn.net/weixin_43199103/article/details/89575420