博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
Python3中的编码
阅读量:7004 次
发布时间:2019-06-27

本文共 1495 字,大约阅读时间需要 4 分钟。

 

  1.编码:

  1.1 ASCII

    一个字符占8位,

 

  1.2 UTF-8

    一个字符占8位

    一个中文占24位

  1.3 GBK

    一个字符占8位

    一个中文占16位

 

  1.4 Unicode

    1.4 只说Unicode的32位

      一个字符占32位

      一个中文字同样占32位

问题 : Unicode中的编码方式能否utf-8中的编码。 GBK的编码方式能否识别utf-8中的编码。 

  (1)各个编码之间的二进制是不能互相识别的,会产生乱码。

  (2)传输或存储用的不是GBK就是UTF-8,或者其他的占用字节少的,unicode是不能用的,因为unicode占用32位,传输速率与流量消耗是极大的。GBK和UTF-8的转换需要借助于Unicode。

 

  2. python3的字符串在内存中是unicode 32位编码方式。这样会产生的问题,一个文件传输过去后,对方不能直接用,因为是乱码的,所以必须要用UTF-8或GBK的方式进行转换存储传输,使用encode将str转换为bytes类型(将unicode转换为utf-8或gbk等),bytes类型可以是以utf-8或gbk或其他的编码进行编码存储的str。

 

  2.1 bytes类型,一种数据类型。bytes类型的操作与字符串类似,与str的区别是编码方式不一样,str的编码是unicode,bytes的编码是gbk或utf-8的。所以想要存储或者传输一个字符串、文章等,必须将编码转换为gbk或utf-8或ascii或gbkgbk2312等(bytes是这样的编码方式),所以str想要传输和存储不能直接进行,需要转换成bytes类型在进行存储和传输。

    对于英文:

    str: 表现形式 s = 'alex',编码方式用的是unicode

    bytes:s = b'alex',编码方式用的是utf-8、gbk等,但不是unicode

 

    对于中文:

    str:表现形式 s = '中国',编码方式是unicode

    bytes:表现形式 s = b'\xe4\xb8\xad\xe5\x9b\xbd',编码方式是utf-8、gbk。2个字节就是gbk,3个字节就是utf-8.

 

  2.2 将unicode如何转换成utf-8或gbk等,也就是str与bytes之间的转换

1 # encode 编码,将str转换为bytes,转换为bytes类型后,可以进行存储和传输 2 s1 = 'alex' 3  4 # 将s1这个在内存以unicode编码方式存储的字符串转换为bytes类型,使用utf-8编码方式存储的字符串s11 5 s11 = s1.encode('utf-8') 6  7 print(s11)  # b'alex' 8  9 s2 = '中国'10 11 s22 = s2.encode('utf-8')12 print(s22)      # b'\xe4\xb8\xad\xe5\x9b\xbd'13 14 # 将s1这个在内存以unicode编码方式存储的字符串转换为bytes类型,使用gbk编码方式存储的字符串s1115 s22 = s2.encode('gbk')16 print(s22)      # b'\xd6\xd0\xb9\xfa'
View Code

 

    

转载于:https://www.cnblogs.com/whylinux/p/9537553.html

你可能感兴趣的文章
123456789 4位数乘1位数=4位数
查看>>
点滴积累【C#】---Highcharts图形统计
查看>>
《程序员代码面试指南》第二章 链表问题 复制含有随机指针节点的链表
查看>>
CentOS 6.5 安装 MySQL5.6 并用Navicat for MySQL 连接
查看>>
CryptoJS加密
查看>>
洛谷——2347砝码称重
查看>>
网络提速(最短路)
查看>>
洛谷——P2683 小岛
查看>>
python双端队列-collection模块
查看>>
Maven项目搭建(三):Maven直接部署项目
查看>>
git自定义项目钩子和全局钩子
查看>>
排球比赛计分规则
查看>>
SQL SERVER 2008 服务器登录名、角色、数据库用户、角色、架构的关系(转)
查看>>
关于DNS的总结
查看>>
HTTP 02 HTTP1.1 协议
查看>>
手机端网页web开发要点
查看>>
小弟浅谈asp.net页面生成周期---下
查看>>
正则表达式中 group groups区别
查看>>
JBoss + EJB3 + MySql : 开发第一个EJB
查看>>
浏览器请求阻塞到底是怎么回事?我们为什么要把静态资源分服务器放置?
查看>>