一. 编码

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. vue全家桶+Koa2开发笔记(6)--app开发

    1.环境配置 详见文章<Nuxt 开发 - 项目初始化> 1.1  使用nuxt脚手架  https://zh.nuxtjs.org/guide/installation 1.2 在nod ...

  2. 每天进步一点点-写完睡觉-周一工作(java基本数据类型所占的字节和IO流读取的字符和字节)

  3. MySQL Lock--INSERT加锁规则

    Insert操作加锁规则 1.INSERT操作会对新插入的记录加行锁(ROW LOCK)+排他锁(X LOCK),不会产生任何GAP锁和Next-Key锁 2.在插入记录前,会向插入记录所在位置申请意 ...

  4. masterlab 敏捷项目管理工具

    masterlab 是一个参考了gitlab 以及jira 的开源项目管理工具,基于php开发,同时官方也提供了一个 docker-compose 运行的项目 clone 代码   git clone ...

  5. c#与C++类型转换网摘

    转载自 C++和C#转换 https://www.cnblogs.com/zjoch/p/4147182.html c#与C++类型转换,网摘 //c++:HANDLE(void   *)       ...

  6. hadoop mapreduce 简单例子

    本例子统计 用空格分开的单词出现数量(  这个Main.mian 启动方式是hadoop 2.0 的写法.1.0 不一样 ) 目录结构: 使用的 maven : 下面是maven 依赖. <de ...

  7. Typescript学习总结之类

    1. 类的定义和使用 class Student { name; say() { console.log(this.name + " saying"); } } var s1 = ...

  8. C# MD5位加密

    /// <summary> /// 方法一:通过使用 new 运算符创建对象 /// </summary> /// <param name="strSource ...

  9. kafka_2.11-0.10.0.1生产者producer的Java实现

    转载自:http://blog.csdn.net/qq_26479655/article/details/52555283 首先导入包 将kafka目录下的libs中的jar包导入 用maven建立 ...

  10. Spring学习之SpringMVC框架快速搭建实现用户登录功能

    引用自:http://blog.csdn.net/qqhjqs/article/details/41683099?utm_source=tuicool&utm_medium=referral  ...