一些关于编码的问题

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值