编码(encode和decode)
一. 编码
1. ASCII编码
ASCII是最早的计算机编码,包含了英文字母(大小写),数字,标点等特殊符号,一共128个码位,最多只能用8位来表示(一个字节),ASCLL码最多256个位置,无法提供中国的汉字.
2. GBK编码
GBK是国标码,占两个字节(16位),虽然位置增多了,但还是无法将汉字全部存储.
3. unicode
unicode是万国码,占4个字节(32位),有40多亿个位置,远远大于中国的汉字数.太浪费.
4. utf-8
utf-8是目前使用最多的编码,每个字符至少占8位.
英文:一个字节(8 bit). 欧洲文字:两个字节(16bit). 中文:三个字节(24bit)
二. encode和decode
1. encode()
encode()是编码, 编码之后的数据是bytes类型的数据.格式:b'(英文),b'\x(中文)
a = "hello"
print(a.encode("GBK")) #b'hello'
print(a.encode("ASCII")) #b'hello'
print(a.encode("UTF-8")) #b'hello' b = "今天下雨了"
print(b.encode("GBK")) #b'\xbd\xf1\xcc\xec\xcf\xc2\xd3\xea\xc1\xcb' 10个字节
print(b.encode("ASCII")) #报错
print(b.encode("UTF-8")) #b'\xe4\xbb\x8a\xe5\xa4\xa9\xe4\xb8\x8b\xe9\x9b\xa8\xe4\xba\x86' 15个字节
注:英文编码之后的结果和源字符串一致. 中文编码之后的结果根据编码的不同. 编码结果也不同. 一个中文的UTF-8编码是3个字节. 一个GBK的中⽂文编码是2个字节. ASCII码没有中文.编码之后的类型就是bytes类型.
2. decode()
接收对方的编码,我们得到的也是bytes类型,需要进行解码来获取原来的字符串.decode()是用来解码的.
bs = b'\xbd\xf1\xcc\xec\xcf\xc2\xd3\xea\xc1\xcb' #不要带引号,直接把bytes给赋值
print(bs.decode("GBK")) #今天下雨了
print(bs.decode("UTF-8")) #报错,用什么编码就要用什么解码.
GBK和UTF-8是不可以互相转换的,但是可以通过Unicode来转换.
bs = b'\xbd\xf1\xcc\xec\xcf\xc2\xd3\xea\xc1\xcb' #不要带引号,直接把bites给赋值
a = bs.decode("GBK") #今天下雨了
print(a.encode("UTF-8")) #b'\xe4\xbb\x8a\xe5\xa4\xa9\xe4\xb8\x8b\xe9\x9b\xa8\xe4\xba\x86' 15个字节
编码(encode和decode)的更多相关文章
- 关于base64编码Encode和Decode编码的几种方式
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...
- 关于Python字符编码encode和decode
(注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 记得几天前,部门的一个小姑娘问我,怎么她Python打印出来的中文信息都乱码了?我走过去,略思一二,瞬间给她搞定,其实这是字 ...
- python编码encode和decode
计算机里面,编码方法有很多种,英文的一般用ascii,而中文有unicode,utf-8,gbk,utf-16等等. unicode是 utf-8,gbk,utf-16这些的父编码,这些子编码都能转换 ...
- python2和python3的编码encode解码decode函数
python比较坑的一个点:意义完全变了的两个函数 首先 常用的编码方式有3种,utf-8: 常用的传输和存储格式,Unicode的一种简化 Unicode:包括了所有可能字符的国际统一编码 GBK ...
- 关于base64编码Encode和Decode编码的几种方式--Java
Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应用上,Base64除了能将Binary资料可视化之外 ...
- JavaScript编码encode和decode escape和unescape
encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIstring 必需.一个字符串,含有 URI 或其他要编码的文本. 返 ...
- Java如何进行Base64的编码(Encode)与解码(Decode)?
https://blog.csdn.net/zhou_kapenter/article/details/62890262 *************************************** ...
- Java进行Base64的编码(Encode)与解码(Decode)
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...
- Java如何进行Base64的编码(Encode)与解码(Decode)
关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...
随机推荐
- linux-----初学命令和理解
the following Codes has been confirmed by me 1.头部标识[pecool@demo ~]: 其中pecool代表登入用户:demo代表系统名称:~代表当前处 ...
- day3 zookeeper
PS:在生产的场景中,一般有两个需求:1.提供设备的注册 2.对所注册的接口进行监听.zookeeper就是提供这样的功能,它本身就是一个集群,如果存在半数以上的节点活着就能提供服务,本身就具备很高的 ...
- mongodb副本集加分片集群安全认证使用账号密码登录
mongodb副本集加分片集群搭建网上资料有很多.粘贴一个写的比较好的.副本集加分片搭建 对于搭建好的mongodb副本集加分片集群,为了安全,启动安全认证,使用账号密码登录. 默认的mongodb是 ...
- OutputStream 和 Writer
OutputStream类(直接操作byte数组) 该类是字节输出流的抽象类,定义了输出流的各种操作方法.如下图是OutputStream的层次结构: ByteArrayOutputStream:字节 ...
- UML异步怎么表达
直接看结果 第一虚框和第二虚框是异步的.m1 和m2 没有任何先后关系. 第一虚框和第二虚框是异步的,两者没有任何先后关系.m3和m4是有先后关系的.m3()比m4()先执行.同样m5()和m6().
- SharePoint Online 怎样让用户只能拥有sub site 的权限
大家使用SharePoint 可能遇到这样的问题. 我怎样能设置manager 为site 的管理人员. 而我收下不同部门的员工只能访问他自己的sub site呢? 这个设置其实很简单. 1. 简 ...
- 3d tech
product Company 3D "smart cameras" such as the Gocator LMI Technologies (Delta, BC Cana ...
- Docker和Rancher
Docker打包流程: Dockerfile文件和要打包docker的文件放在同级目录下: 1. docker build -t proj:proj-app:0.0.1 返回tagXXX 2. doc ...
- mysql性能分析show profile/show profiles
MySQL性能分析show profiles show profile 和 show profiles 语句可以展示当前会话(退出session后,profiling重置为0) 中执行语句的资源使用情 ...
- springboot整合shiro-登录认证和权限管理
https://blog.csdn.net/ityouknow/article/details/73836159