常用编码与为何要encode和decode
目录
(小拓展):
(一)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相关推荐
- 编码与解码(encode、decode)
编码与解码(encode.decode) 一.什么是编码: 例:从文字到0.1的映射称为编码 将文本字符编成一系列的0和1 聚义来说就是将字母数字及标点符号编一个号.一个字节可以表示256个数字,表示 ...
- Python学习笔记之编码问题 unicode、encode、decode
在所有字符集中,最知名的可能要数被称为ASCII的7位字符集了.它是美国标准信息交换代码(American Standard Code for Information Interchange)的缩写, ...
- Python 问题--encode、decode及shell中文输出
最近在使用python的时候,涉及到中文输出的时候经常会出现乱码的问题,所以就上网搜索了下,参考了 1.Python字符串的encode与decode研究心得乱码问题解决方法: 2.python 中编 ...
- Python标准库:codecs【专门做编码转换】【open()、encode()、decode()、lookup()、getencoder()】【读写文件codecs.open()优于open()】
codecs专门用作编码转换,当我们要做编码转换的时候可以借助codecs很简单的进行编码转换 codecs模块提供一个open方法,三个参数encoding, errors, buffering,这 ...
- Python zipfile 文件名称编码 file_name.encode(‘cp437‘).decode(‘gbk‘)
主要是处理压缩包里的中文,不出现乱码 with zipfile.ZipFile('love.zip', 'r') as zipobj: #读取压缩包for file_name in zipobj.na ...
- 编码格式(UTF-8 与 ANSI)各种编码解码(encode、decode)
Windows:默认为 ANSI,记事本程序另存为处,可以设置其他编码格式: Ubuntu:默认为 UTF-8 1. ANSI ANSI 编码表示英文字符时用一个字节,表示中文用两个或四个字节 -- ...
- python 乱码转码_数据库乱码问题 Python 编码问题(Unicode 的 encode、decode 相互转换 )...
前言: 今天有个项目需要合并(A合并到B),我所做的就是数据库的合并操作,其中出现的主要问题就是乱码的问题.乱码这个问题是很常见的问题,今天整理了下自己所理解的一点见解. 案例: NAME COMPA ...
- python编码问题之encode、decode、codecs模块
原文链接 #先说说编解码问题 编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(encode)成另一种编码. Eg: ...
- 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 ...
- pythonunicode和str_python的str,unicode对象的encode和decode方法
python的str,unicode对象的encode和decode方法 python中的str对象其实就是"8-bit string" ,字节字符串,本质上类似java中的byt ...
最新文章
- AI开发难?请收下华为云AI大拿秘籍一份!
- python分析基金数据,[Python数据分析]numpy基金会,基础
- 自动驾驶真的会来得那么快吗:关于自动驾驶的7个疑问
- Android移动开发之【通往安卓的神奇之旅】Senior VIew高级组件与onClickListener()再探索
- opencv用haartraining训练出现的一些问题
- 自由自在带你品尝一种能长出果蔬的冰淇淋
- java找到项目下的某个文件夹_servlet 得到 JavaWeb项目下某文件夹的路径
- 万字长文 | 漫谈libco协程设计及实现
- CDN - 域名解析错误排查
- Java与Python:哪一个最适合您? [信息图]
- 最全Pycharm教程(10)——Pycharm调试器总篇
- java框架----mybatis的使用(一)
- 做游戏怎能没有马云马化腾?
- 【Spring第二篇】IOC:控制反转
- 设计模式-------建造者模式(生成器模式)
- JetBrains系列产品学生认证申请免费使用教程
- 个人微信api接口调用,微信好友收发消息
- linux 命令下载jdk
- 更改WSL Docker 镜像目录 减少C盘占用
- django-mysql 中的金钱计算事务处理