目录

(小拓展):

(一)ASCII 码

(二)Unicode 码

(三)UTF-8 码

(四)总结与encode、decode


(小拓展):

下面是每个字符对应的编号,字符0~9对应编号48~57,就是说ASCII码全是字符!

我们键盘上每个键都对应一个ascii码,这也就是为什么python中input('请输入一个数')得到的是字符,我们还得把它转换成int的原因了

(一)ASCII 码

ASCII 码 表示 127 个英文字符

ASCII 码最先出现,最初只适合英语

随着计算机普及,各国家语言不同,文字多少更是不同,127个根本不够用。各国都要为自己的语言编码。

中国自己的编码是gbk,每个中文需要使用两个字节来编码,中文编码的规则 —— GB2312  (都是常用汉字),比如高考报名时有的学生姓名输入是乱码,就是因为教育部用的GB2312,而他的名字中有个太偏僻的字。

由于不同国家有不同的编码规则,如日本,韩国都使用各自国家的编码规则,在多语言
混用的场合会出现混乱。怎么解决?

(二)Unicode 码

Unicode 用来把所有语言都统一到一套编码里,这样就不会再有乱码问题了。

Unicode通常用两个字节编码(有的也用四个字节),而 ASCII 码通常用一个字节字节。ASCII 码转
换成 Unicode 在前面一个字节补 0

Unicode码虽然全面,但是用起来笨重,比如说我就是想传个1到服务器,你还要给我用两个字节编码么?传额外15个0?

(三)UTF-8 码

UTF-8 把unicode进行优化,减小了硬盘存储空间浪费与传输效率低下

不过在内存中都要转换成unicode

UTF-8 编码把一个 Unicode 字符根据不同的数字大小编码成 1-6 个字节,常用的英文字
母被编码成 1 个字节,汉字通常是 3 个字节,只有很生僻的字符才会被编码成 4-6 个字节。

如果你要传输的文本包含大量英文字符,用 UTF-8 编码就能节省空间。

UTF-8 的一个好处在于,原有的 ASCII 的编码可以在 UTF-8 下继续工作。

(四)总结与encode、decode

搞清楚了 ASCII、Unicode 和 UTF-8 的关系,我们就可以总结一下现在计算机系统通用
的字符编码工作方式:

在计算机内存中,统一使用 Unicode 编码,当需要保存到硬盘或者需要传输的时候,
就转换为 UTF-8 编码。

用记事本编辑的时候,从文件读取的 UTF-8 字符被转换为 Unicode 字符到内存里,编
辑完成后,保存的时候再把 Unicode 转换为 UTF-8 保存到文件:rw-file-utf-8

浏览网页的时候,服务器会把动态生成的 Unicode 内容转换为 UTF-8 再传输到浏览器:
web-utf-8
所以你看到很多网页的源码上会有类似的信息,表示该网页正是用的 UTF-8 编码。

首先要搞清楚,字符串在 Python 内部的表示是 unicode 编码,因此,在做编码转换时,
通常需要以 unicode 作为中间编码,即先将其他编码的字符串解码(decode)成 unicode,
再从 unicode 编码(encode)成另一种编码。
1.decode:其它码-->unicode
decode 的作用是将其他编码的字符串转换成 unicode 编码,如 str1.decode(‘gb2312’),表
示将 gb2312 编码的字符串转换成 unicode 编码。
2.encode:unicode-->其它码
encode 的作用是将 unicode 编码转换成其他编码的字符串,如 str2.encode(‘gb2312’),表
示将 unicode 编码的字符串转换成 gb2312 编码。

常用编码与为何要encode和decode相关推荐

  1. 编码与解码(encode、decode)

    编码与解码(encode.decode) 一.什么是编码: 例:从文字到0.1的映射称为编码 将文本字符编成一系列的0和1 聚义来说就是将字母数字及标点符号编一个号.一个字节可以表示256个数字,表示 ...

  2. Python学习笔记之编码问题 unicode、encode、decode

    在所有字符集中,最知名的可能要数被称为ASCII的7位字符集了.它是美国标准信息交换代码(American Standard Code for Information Interchange)的缩写, ...

  3. Python 问题--encode、decode及shell中文输出

    最近在使用python的时候,涉及到中文输出的时候经常会出现乱码的问题,所以就上网搜索了下,参考了 1.Python字符串的encode与decode研究心得乱码问题解决方法: 2.python 中编 ...

  4. Python标准库:codecs【专门做编码转换】【open()、encode()、decode()、lookup()、getencoder()】【读写文件codecs.open()优于open()】

    codecs专门用作编码转换,当我们要做编码转换的时候可以借助codecs很简单的进行编码转换 codecs模块提供一个open方法,三个参数encoding, errors, buffering,这 ...

  5. Python zipfile 文件名称编码 file_name.encode(‘cp437‘).decode(‘gbk‘)

    主要是处理压缩包里的中文,不出现乱码 with zipfile.ZipFile('love.zip', 'r') as zipobj: #读取压缩包for file_name in zipobj.na ...

  6. 编码格式(UTF-8 与 ANSI)各种编码解码(encode、decode)

    Windows:默认为 ANSI,记事本程序另存为处,可以设置其他编码格式: Ubuntu:默认为 UTF-8 1. ANSI ANSI 编码表示英文字符时用一个字节,表示中文用两个或四个字节 -- ...

  7. python 乱码转码_数据库乱码问题 Python 编码问题(Unicode 的 encode、decode 相互转换 )...

    前言: 今天有个项目需要合并(A合并到B),我所做的就是数据库的合并操作,其中出现的主要问题就是乱码的问题.乱码这个问题是很常见的问题,今天整理了下自己所理解的一点见解. 案例: NAME COMPA ...

  8. python编码问题之encode、decode、codecs模块

    原文链接 #先说说编解码问题 编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码. Eg: ...

  9. python3 gb2312转utf8_python2和python3字符编码 unicode,utf-8,gb2312相互转换encode,decode...

    一.预习: 1.Unicode 和utf-8之间的关系 unicode是一种编码标准,具体的实现标准可能是utf-8,utf-16,gbk -- UTF-8是Unicode的实现方式之一 2.pyth ...

  10. pythonunicode和str_python的str,unicode对象的encode和decode方法

    python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byt ...

最新文章

  1. AI开发难?请收下华为云AI大拿秘籍一份!
  2. python分析基金数据,[Python数据分析]numpy基金会,基础
  3. 自动驾驶真的会来得那么快吗:关于自动驾驶的7个疑问
  4. Android移动开发之【通往安卓的神奇之旅】Senior VIew高级组件与onClickListener()再探索
  5. opencv用haartraining训练出现的一些问题
  6. 自由自在带你品尝一种能长出果蔬的冰淇淋
  7. java找到项目下的某个文件夹_servlet 得到 JavaWeb项目下某文件夹的路径
  8. 万字长文 | 漫谈libco协程设计及实现
  9. CDN - 域名解析错误排查
  10. Java与Python:哪一个最适合您? [信息图]
  11. 最全Pycharm教程(10)——Pycharm调试器总篇
  12. java框架----mybatis的使用(一)
  13. 做游戏怎能没有马云马化腾?
  14. 【Spring第二篇】IOC:控制反转
  15. 设计模式-------建造者模式(生成器模式)
  16. JetBrains系列产品学生认证申请免费使用教程
  17. 个人微信api接口调用,微信好友收发消息
  18. linux 命令下载jdk
  19. 更改WSL Docker 镜像目录 减少C盘占用
  20. django-mysql 中的金钱计算事务处理

热门文章

  1. 组建团队和调整团队结构
  2. OceanBase使用 OBD 自动化部署多节点集群
  3. 手机上最好用的五笔输入法_手机输入法正在暴露你的年龄,九宫格和全键盘,你用的是哪一种?...
  4. 【学习笔记】大数据可视化简介
  5. 刘华:上云还是不上云,这是一个问题
  6. js制作flash文件进度条
  7. 【jdk1.8特性】之Instant
  8. YouTube上的版权保护
  9. Ubuntu 的千千静听
  10. 算法和数据结构(b站尚硅谷韩老师教程学习笔记)