ascii用一个字节(8位二进制)代表一个字符

Unicode常用2个字节(16位二进制)代表一个字符,生僻字需要用四个字节

汉字中已经超出了ASCII编码的范围,用Unicode,

Unicode兼容ascii,也兼容万国,是世界的标准

乱码问题消失了,所有的文档我们都使用但是新问题出现了,如果我们的文档通篇都是英文,你用Unicode会比ascii耗费多一倍的空间,在存储和传输上也十分的低效

本着节约的精神,又出现了把Unicode编码转化为"可変长编码"的UTF8编码,utf8编码把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成一个字节,汉字通常是三个字节,只有很生僻的字符才会被编码成4-6个字节。如果你要传输的文本包含大量英文字符,用utf8编码就能节省空间

utf8编码还有一个额外的好处,就是ascii编码实际上可以被看成是utf8编码的一部分,所以,大量只支持ascii编码的历史遗留软件可以在utf8编码下继续工作

python3中有两种字符串类型str和bytes

python3中str就是unicode

python2要加u的前缀才算是Unicode

a='呵呵'
print(type(a))#<class 'str'>
b=bytes(a,encoding='utf8')
print(b)#b'\xe5\x91\xb5\xe5\x91\xb5'
c=str(b,encoding='utf8')
print(c)#呵呵 python3默认字符串就是Unicode
a='呵呵'
#a可以直接encode成任意编码格式
b=a.encode('utf8')
print(b)#字节 b'\xe5\x91\xb5\xe5\x91\xb5'
print(type(b))#<class 'bytes'>
c=b.decode('utf8') print(c)#字符串
import sys
print(sys.getdefaultencoding())#可以查看默认编码

最新文章

  1. ABAP POPUP函数
  2. [Mac]Mac OS 10.11虚拟机搭建ReactNative遇坑记录
  3. arch Linux not found device 错误解决
  4. 【JavaScript DOM 编程艺术】 笔记
  5. Day4 装饰器——迭代器——生成器
  6. jupyter 安装、配置及使用笔记
  7. [ExtJS5学习笔记]第二十八节 sencha ext js 5.1.0发布版本正式发布 extjs doc下载地址
  8. [代码]解析nodejs的require,吃豆人的故事
  9. Flutter数据持久化入门以及与Web开发的对比
  10. Saiku资源帖
  11. Django全文检索(django-haystack+whoosh+jieba)
  12. java对象之----(PO,VO,DAO,BO,POJO)
  13. 破解第二课 JMP法
  14. 一个少女心满满的例子带你入门canvas
  15. js返回值 数组去重
  16. [development][dpdk] dpdk与CONFIG_RTE_MAX_MEMSEG有关的错误
  17. vue 列表选中 v-for class
  18. Kafka设计解析:Kafka High Availability
  19. yii2 数据库查询
  20. Beat(2/7)

热门文章

  1. CS项目总结
  2. stm32开发板无法正常写入的问题或者写入后无法正常运行的问题
  3. Spring Boot MongoDB JPA 简化开发
  4. Spring MVC表单提交中文数据出现乱码
  5. SecurCRT 远程linux 输入中文及 oracle 查询出文号问题
  6. Java中常见数据结构
  7. dm8148 开发之---IDR帧
  8. MySQL左连接查询
  9. iOS开发常见问题(不断更新)
  10. 《从零开始学Swift》学习笔记(Day 41)——类的继承