一. 编码

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. struts2的国际化i18n

    先来例子,普通的读取配置文件中不同语言信息,一个测试类,一份中文配置文件,一份英文配置文件 中文配置文件,书写中文“欢迎”,myelipse自动转码 public class Readi18n { p ...

  2. fastdfs(https://www.jianshu.com/p/1c71ae024e5e)

    参考 官方网站:https://github.com/happyfish100/ 配置文档:https://github.com/happyfish100/fastdfs/wiki/ 参考资料:htt ...

  3. Next generation configuration mgmt

    转自:https://purpleidea.com/blog/2016/01/18/next-generation-configuration-mgmt/ It’s no secret to the ...

  4. 路由器外接硬盘做nas可行吗?

    话说把家里的newifi mini升级到最新版后,又外接了个移动硬盘做nas,第一部就打算吧手机的视频移过去.一试才发现这速度慢的不行.只有几百kb 所以说,用是能用,单着速度也太慢了 再就是貌似硬盘 ...

  5. Python的rand vs randn以及linspace

    Numpy里面的randn是满足了整体分布的,normal distribution(正态分布):rand则是满足了Uniform Distribution(均匀分布): Linspace(start ...

  6. 弱网测试—Network-Emulator-Toolkit工具

    参考别人网址:http://blog.csdn.net/no1mwb/article/details/53638681 弱网测试,属于健壮性测试:怎么样去做弱网测试呢? 一.安装弱网测试工具-Netw ...

  7. 三种方法获取Class对象的区别

    有关反射的内容见 java反射 得到某个类的Class对象有三种方法: 使用“类名.class”取得 Class.forName(String className) 通过该类实例对象的getClass ...

  8. Unicode与UTF-8

    以下内容转自网络 很久很久以前,有一群人,他们决定用8个可以开合的晶体管来组合成不同的状态,以表示世界上的万物.他们看到8个开关状态是好的,于是他们把这称为”字节“.再后来,他们又做了一些可以处理这些 ...

  9. Redis list数据结构

    1. 更换命名空间 2.lpush 往列表里放入10个值 3. llen列表长度 4. lrange 列表范围 8. lset将第0个元素设置为88 9. lindex 获得第2个元素 10. lpo ...

  10. SQL优化之count(*),count(列)

    一.count各种用法的区别 1.count函数是日常工作中最常用的函数之一,用来统计表中数据的总数,常用的有count(*),count(1),count(列).count(*)和count(1)是 ...