python中关于unicode,utf-8,gbk等编码的联系与区别笔记

1.基本概念

(1)字符和字节是两个不同的术语,在unicode中一个字符就是两个字节,如’人’一个字符占两个字节。对于python中len()函数,len(u’中国’)和len(‘hi’)一样长度值都为2,这里长度是指字符长度

(2)ASCII码跟Unicode没有本质的区别。只不过Unicode表示范围比ASCII大

(3)在简体中文Windows操作系统中,ANSI 编码代表 GBK 编码

 

2.unicode和utf-8的区别

(1)unicode是charset(字符集),包括GBK,GBK2312也是字符集

(2)utf-8是encoding(编码):多字节编码,对英文使用8位(1个字节),对中文使用24位(3个字节)编码

(3)unicode是一个字符集,utf-8是在这个字符集基础上的一种具体的编码方案,为了更好的存储和传输,还有utf-16,utf-32等。

 

 

 

3.平时我们读取utf-8编码保存的txt文件的原理:

文本文档是utf-8编码保存的,这样可以最大限度的节省空间。但是当对文档进行操作时,计算机会先把utf-8转换为unicode然后放在内存中,保存时又将unicode转换为utf-8。

 

4.python之中utf-8,unicode,gbk之间转换

(1)在一些应用场景,会出现这样的需求:UTF-8 -> Unicode -> GBK,然而,unicode与GBK没有相对应的算法可以直接转换,gbk与unicode没有直接的对应关系,只能通过一张大表将两者联系起来。

(2)在python中unicode中的type为str,gbk/utf-8的类型为byte,如下图

(3)unicode,utf-8,gbk之间的转换,需要先转为unicode

utf-8 <---> unicode <---> gbk

转换例子:

s=u'小明'

#编码为utf-8

s_utf = s.encode('utf-8')

#变为为gbk,先解码为unicode,再编码

s_gbk = s_utf.decode('utf-8').encode('gbk')

结果如下图所示,utf-8一个中文占3个字节,gbk两个字节

UNICODE,GBK,UTF-8区别参考链接:

https://www.cnblogs.com/gavin-num1/p/5170247.html

  • 8
    点赞
  • 32
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值