python教程3.3:字符和编码
1、二进制
计算机只能存储和识别二进制,但是人类常用的字母、数字、汉字怎么用计算机存储和识别呢?
人类强行约定一个对应表,把数字、字母和数字进行对应上,这样就可以用二进制表示字母和数字了。
2、ASCII编码
ASCII是美国于1967年创建,只有127个字母和数字(后面扩展128个,一共255个),用8位二进制来表示。

⼀个空格对应的数字是0, 翻译成⼆进制就是00000000
⼀个对勾√对应的数字是251 ,翻译成⼆进制就是11111011
3、计算机容量单位
二进制的每⼀位0或者1所占的空间单位为bit(⽐特),这是计算机中最⼩的表示单位。
每8个bit组成⼀个字节,这是计算机中最⼩的存储单位。

4、GB2312和GBK
中国自己1980年设计的GB2312编码表,一共存6763个汉字,用2个字节表示一个汉字。
但是如果中英文混合的情况,中文用2个字节GB2312,英文用ASCII编码。
中英文区别规则:
如 果2个字节连在⼀起,且每个字节的第1位(也就是相当于128的那个2进制位)如果是1,就代表这是个中 ⽂,这个⾸位是128的字节被称为⾼字节。 也就是2个⾼字节连在⼀起,必然就是⼀个中⽂。 你怎么如 此笃定?因为0-127已经表示了英⽂的绝⼤部分字符,128-255是ASCII的扩展表,表示的都是极特殊的 字符,⼀般没什么⽤。所以中国⼈就直接拿来⽤了。
1995年扩展升级了GB2312,增加了很多生僻字、字符、藏语、维吾尔语等,叫GBK,现在windows的中文版本编码默认就是GBK。
5、编码战国时代--出现Unicode
各个国家都搞出自己的编码,不同国家软件流通就遇到问题。Unicode应运⽽⽣。Unicode把所有语⾔都统⼀到⼀套编码⾥,这样就不会再有乱码问题了。
Unicode 2-4字节 已经收录136690个字符,并还在⼀直不断扩张中…
Unicode标准也在不断发展,但最常⽤的是⽤两个字节表示⼀个字符(如果要⽤到⾮常偏僻的字符,就 需要4个字节)
Unicode特点:
1. ⽀持全球所有语⾔
2. 可以跟各种语⾔的编码⾃由转换,也就是说,即使你gbk编码的⽂字 ,想转成unicode很容易。
Unicode跟所有语言都有对应关系,可以很容易进行互相转换。
6、UTF-8的出现
如果你写的⽂本基本上全 部是英⽂的话,⽤Unicode编码⽐ASCII编码需要多⼀倍的存储空间,由于计算机的内存⽐较⼤,并且 字符串在内容中表示时也不会特别⼤,所以内容可以使⽤unicode来处理,但是存储和⽹络传输时⼀般 数据都会⾮常多,那么增加1倍将是⽆法容忍的!!!
为了解决存储和⽹络传输的问题,出现了Unicode Transformation Format,学术名UTF,即:对 unicode字符进⾏转换,以便于在存储和⽹络传输时可以节省空间!
UTF-8: 使⽤1、2、3、4个字节表示所有字符;优先使⽤1个字节、⽆法满⾜则使增加⼀个字节, 最多4个字节。英⽂占1个字节、欧洲语系占2个、东亚占3个,其它及特殊字符占4个
UTF-16: 使⽤2、4个字节表示所有字符;优先使⽤2个字节,否则使⽤4个字节表示。
UTF-32: 使⽤4个字节表示所有字符;
UTF 是为unicode编码 设计 的⼀种 在存储 和传输时节省空间的编码⽅案。


7、编码汇总一览表

8、Py2 Vs Py3编码
python⽣下来的时候 还没有unicode&utf-8, 所以⻳叔选⽤的默认编码只能是ASCII, ⼀直到py2.7,⽤的 还是ASCII, 导致Py默认只⽀持英⽂,想⽀持其它语⾔,必须单独配置。
到了Py3推出后,终于把默认编码改成了unicode, 同时⽂件存储编码变成了utf-8,意味着,不⽤任何声 明,你就可以写各种语⾔⽂字在你的Python程序⾥。 从此,程序们⼿牵⼿过上了快乐的⽣活。
9、16进制

16进制在计算`机领域应⽤普遍,常⻅的有html\css的颜⾊表、mac地址、字符编码等都⽤16进制来表 示。 这是因为将4个位元(Bit)化成单独的16进制数字很容易。1字节可以表示成2个连续的16进制数字。
可是,这种混合表示法容易令⼈混淆,因此需要⼀些字⾸、字尾或下标来显示,在C语⾔、C++、 Shell、Python、Java语⾔及其他相近的语⾔使⽤字⾸“0x”来标示16进制,例如“0x5A3”代表1443。
路⻜的gbk编码的bytes数据是

10、不同字符的转换
GBK编码的字符如何转成utf-8存储


任意编码转换成unicode的过程,都叫解码。

把unicode转换成任意编码的过程 ,都叫编码。

注意:
windows中文版,默认用GBK编码
mac/linux中文版,默认用UTF-8编码,因此如果windows文件发到mac和linux会有乱码问题。
python教程3.3:字符和编码的更多相关文章
- Python基础【day03】:字符转编码操作(五)
本节内容 1.编码介绍 2.字符编码介绍 3.总结 说到python的编码,一句话总结,说多了都是泪啊,这个在以后的python的开发中绝对是一件令人头疼的事情.所以有必要要讲讲清楚 一.编码介绍 1 ...
- python教程1:Python基础之数据类型和变量、字符串和编码
视频链接:http://www.bilibili.com/video/av10730372/ 我是在Linux下玩python的,Linux下默认安装python,直接打个pyhon3就好了,pyth ...
- python之旅:字符编码
一 了解字符编码的知识储备 一 计算机基础知识 知识储备:cpu.内存.硬盘 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在 ...
- Python字符和编码
1. 字符和编码 背景 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte). 由于计算机是美国人发明的,因此, ...
- python基础——6(字符编码,文件操作)
今日内容: 1.字符编码: 人识别的语言与机器识别的语言转化的媒介 ***** 2.字符与字节: 字符占多少字节,字符串转化 *** 3.文件操作: 操作硬盘中的一块区域:读写操作 ...
- Python基础之字符的编码
参考原文 Python廖雪峰 为什么要进行编码? 计算机只能处理二进制数字(0100111),要处理文本,就必须先把文本转为数字才能处理,这个过程就叫编码. 字符的编码 ASCII编码 由于计算机是美 ...
- Python学习日记(二)——字符转编码操作
首先搞清楚:Python3的默认编码是unicode,Python2的默认编码是ASCII码 为什么需要编解码? 打个比方:假如说我做了一个游戏,叫<西游记>,游戏传到了日本去.但是日本人 ...
- python文件操作:字符编码与文件处理
一.字符编码 二.文件处理 一.字符编码 储备知识点: 1. 计算机系统分为三层: 应用程序 操作系统 计算机硬件 2. 运行python程序的三个步骤 1. 先启动python解释器 2. 再将py ...
- Python基础编程:字符编码、数据类型、列表
目录: python简介 字符编码介绍 数据类型 一.Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心 ...
- Python之字符与编码笔记
概述 类型 str 字符串 bytes 字节 bytearray 字节数组 字符串编码架构 字符集:赋值一个编码到某个字符,以便在内存中表示 编码 Ecoding:转换字符到原始字节形式 解码 Dec ...
随机推荐
- 【Learning eBPF-2】eBPF 的“Hello world”
前一章讲了 eBPF 为什么这么吊,不理解没关系,现在开始,我们通过一个 "Hello world" 例子,来真正入门一下. BCC Python 框架是上手 eBPF 的最友好方 ...
- HarmonyOS SDK,赋能开发者实现更具象、个性化开发诉求
随着移动互联网的逐步成熟,用户的需求越来越细化.鸿蒙生态为开发者提供的HarmonyOS SDK开放能力,高效赋能美团外卖等合作伙伴实现更具象.个性化的开发诉求,给用户提供更丰富便捷的体验. 点击链接 ...
- CMakeLists.txt 编写模板
新建文件 CMakeLists.txt # 设置cmake的最低版本 cmake_minimum_required(VERSION 2.8) # 指定为C++11 版本 set(CMAKE_CXX ...
- amcap使用方法
1.选择设备 device 里面显示的是设备,分割线上面是视频设备,分割线下面是音频设备 2.打开图像 options > Preview 勾选上就是打开视频,再次点击取消勾线就是关闭视频 3 ...
- 《深入理解Java虚拟机》读书笔记:虚拟机性能监控与故障处理工具
一.JDK的命令行 虚拟机性能监控与故障处理工具 工具 1.jps:虚拟机进程状况工具 jps主要用来输出JVM中运行的进程状态信息,它的功能也和ps命令类似:可以列出正在运行的虚拟机进程,并显示虚拟 ...
- 第一篇:Python入门基础
主要内容 1.Python简介 2.变量 3.字符编码 4.用户交互 5.if 流程判断 6.while循环 7.for循环 一.Python简介 1.python的创始人为吉多·范罗苏姆(Guido ...
- 国密 SM2 的非对称加密解密过程
国密 SM2 的非对称加密解密过程 椭圆曲线 椭圆曲线是由一组方程描述的点的集合: y2 = x3 + ax + b 其中 a, b 满足 (4a3 + 27b2 ≠ 0) SM2 定义了一个 sm2 ...
- 构建动态交互式H5导航栏:滑动高亮、吸顶和锚点导航技巧详解
功能描述 产品要求在h5页面实现集锚点.吸顶及滑动高亮为一体的功能,如下图展示的一样.当页面滑动时,内容区域对应的选项卡高亮.当点击选项卡时,内容区域自动滑动到选项卡正下方. 布局设计 css 布局 ...
- nginx 如何代理websocket
前言 下面是配置nginx websocket 的代码. # HTTPS server map $http_upgrade $connection_upgrade { default upgrade; ...
- PostgreSQL 14.4的安装以及使用以及一些安装的异常
PostgreSQL 14的安装以及使用 因为公司的一些要求,可能要换数据库,虽然之前装过,但是版本感觉还是新一点比较好,所以重新装一下 首先下载文件,直接去官网下载就行 https://www.en ...