一. 编码

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)的更多相关文章

  1. 关于base64编码Encode和Decode编码的几种方式

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  2. 关于Python字符编码encode和decode

    (注:本文部分内容摘自互联网,由于作者水平有限,不足之处,还望留言指正.) 记得几天前,部门的一个小姑娘问我,怎么她Python打印出来的中文信息都乱码了?我走过去,略思一二,瞬间给她搞定,其实这是字 ...

  3. python编码encode和decode

    计算机里面,编码方法有很多种,英文的一般用ascii,而中文有unicode,utf-8,gbk,utf-16等等. unicode是 utf-8,gbk,utf-16这些的父编码,这些子编码都能转换 ...

  4. python2和python3的编码encode解码decode函数

    python比较坑的一个点:意义完全变了的两个函数 首先 常用的编码方式有3种,utf-8:  常用的传输和存储格式,Unicode的一种简化 Unicode:包括了所有可能字符的国际统一编码 GBK ...

  5. 关于base64编码Encode和Decode编码的几种方式--Java

    Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便.在实际应用上,Base64除了能将Binary资料可视化之外 ...

  6. JavaScript编码encode和decode escape和unescape

    encodeURI() 函数可把字符串作为 URI 进行编码. 语法 encodeURI(URIstring) 参数 描述 URIstring 必需.一个字符串,含有 URI 或其他要编码的文本. 返 ...

  7. Java如何进行Base64的编码(Encode)与解码(Decode)?

    https://blog.csdn.net/zhou_kapenter/article/details/62890262 *************************************** ...

  8. Java进行Base64的编码(Encode)与解码(Decode)

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

  9. Java如何进行Base64的编码(Encode)与解码(Decode)

    关于base64编码Encode和Decode编码的几种方式 Base64是一种能将任意Binary资料用64种字元组合成字串的方法,而这个Binary资料和字串资料彼此之间是可以互相转换的,十分方便 ...

随机推荐

  1. Spring——使用自定义标签

    文章内容参考了<Spring源码深度解析>一书.自己照着书中内容做了一遍,不懂的地方以及采坑的地方会在文中记录. 推荐一篇post,关于Spring配置文件的命名空间: https://w ...

  2. day20kafka

    Storm上游数据源之Kakfa PS:什么是kafka,为什么要学习它? http://blog.csdn.net/zcf_0923/article/details/70859535http://b ...

  3. webbrowser 响应关闭事件

    void registerEvents(System.Windows.Forms.WebBrowser web) { var rnd = new Random(); ]; if (head == nu ...

  4. mongodb集群性能优化

    mongodb集群性能优化 在前面两篇文章,我们介绍了如何去搭建mongodb集群,这篇文章我们将介绍如何去优化mongodb的各项配置,以达到最优的效果. 警告 不做任何的优化,集群搭建完成之后,使 ...

  5. shell-url-decode

    查询每个小时的clk ,然后获取对应的字段 #!/bin/bash urldecode(){ echo -e "$(sed 's/+/ /g;s/%\(..\)/\\x\1/g;')&quo ...

  6. jquery 复选框(选中/取消)获取状态

    $("#login-rem").attr("checked","checked") //设置选中 $("#login-rem&qu ...

  7. BinaryReader 自己写序列化

    听说过BinaryReader和BinaryWriter吗? 序列化无非就是网络通信时所使用的传输数据的方式,而BinaryWriter可以将数据以二进制的方式写入到流当中.比如Int32型的1用Bi ...

  8. java考试感受

    开学不久,我们进行了一次java程序考试.在此之前,老师要求我们在假期自学java并提前发了一个考试样卷,要求用数组编写一个学生信息管理系统并能够实现一系列的功能.由于我早早的便完成了这道题.因此对这 ...

  9. 深入探讨JavaScript如何实现深度复制(deep clone)

    在代码复用模式里面有一种叫做“复制属性模式”(copying properties pattern).谈到代码复用的时候,很有可能想到的是代码的继承性(inheritance),但重要的是要记住其最终 ...

  10. Spring技术内幕总结 - IoC容器的实现

    IoC:Inversion of Control,控制反转,即依赖对象的获得被反转了(DI:dependency inversion,依赖注入)在Spring中,IoC容器是实现这个模式的载体.它可以 ...