豆豆学python——(2)字符串和编码

1.字符编码

计算机中一个字节(byte)有八个比特(bit),一个字节能表示的最大整数是255,两个字节为65535。

最早只有127个字符被编入计算机,也就是大小写英文及数字,该编码表被称为ASCII表,但是却不能显示别的国家的语言,因此各国制定了各自的编码(中国:GB2312;日本:Shift_JIS;韩国:Euc-kr),因为每个国家都有自己的标准,所以容易引起冲突,在多语言混合的文本中就会出现乱码,为解决这一问题,于是诞生了Unicode标准,把所有标准统一到一个标准里,但是储存空间会比ASCII多出一倍,为了解决这一问题,又出现了可以把Unicode编码转化为“可变长编码”的UTF-8编码。UTF-8编码把Unicode字符根据不同数字大小编码成1-6个字节,常用的英文字母被编码成一个字节,汉字通常是3个字节,只有很生僻的字被编码成4-6个字节。

计算机编码工作方式:在计算机内存中通常使用Unicode编码,当保存到硬盘或者需要传出的时候,就转化成UTF-8编码。

2.字符串

对于单个字符,可以通过ord()函数将获取的字符用整数编码表示,chr()则可以将编码转化成对应的字符。

在Python中字符串类型是str,在内存中以Unicode表示,一个字符代表多个字节。但是如果要在网络上传输,或者将其保存到磁盘上,就需要把str变为以字节为单位的bytes。

在python中byte类型的数据用带b前缀的单引号或双引号表示:x=b“ABC”  在byte中 每个字符只占用一个字节

通过len()函数可以计算 str 的字符数,byte的字节数。

3.字符编码转化

decode('xxx') 可将xxx类型的编码字符转化成由Unicode编码的字符

encode('xxx') 可将Unicode类型编码的字符转化成由xxx编码的字符

想要将其他其他类型的编码转化成别的类型的编码,需通过Unicode作为中间媒介。

s='中文'

s=s.decode('utf-8')   #将utf-8编码的解码成unicode

print isinstance(s,unicode)   #此时输出的就是True

s=s.encode('utf-8')           #又将unicode码编码成utf-8

print isinstance(s,unicode)   #此时输出的就是False

'''

print sys.getdefaultencoding()


s='中文'

if isinstance(s,unicode):   #如果是unicode就直接编码不需要解码

    print s.encode('utf-8')

else:

    print s.decode('utf-8').encode('gb2312')

print sys.getdefaultencoding()    #获取系统默认的编码

reload(sys)

sys.setdefaultencoding('utf8')    #修改系统的默认编码

print sys.getdefaultencoding()

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值