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:字符和编码的更多相关文章

  1. Python基础【day03】:字符转编码操作(五)

    本节内容 1.编码介绍 2.字符编码介绍 3.总结 说到python的编码,一句话总结,说多了都是泪啊,这个在以后的python的开发中绝对是一件令人头疼的事情.所以有必要要讲讲清楚 一.编码介绍 1 ...

  2. python教程1:Python基础之数据类型和变量、字符串和编码

    视频链接:http://www.bilibili.com/video/av10730372/ 我是在Linux下玩python的,Linux下默认安装python,直接打个pyhon3就好了,pyth ...

  3. python之旅:字符编码

    一 了解字符编码的知识储备 一 计算机基础知识 知识储备:cpu.内存.硬盘 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在 ...

  4. Python字符和编码

    1. 字符和编码 背景 因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理.最早的计算机在设计时采用8个比特(bit)作为一个字节(byte). 由于计算机是美国人发明的,因此, ...

  5. python基础——6(字符编码,文件操作)

    今日内容: 1.字符编码: 人识别的语言与机器识别的语言转化的媒介 *****     2.字符与字节: 字符占多少字节,字符串转化 ***     3.文件操作: 操作硬盘中的一块区域:读写操作  ...

  6. Python基础之字符的编码

    参考原文 Python廖雪峰 为什么要进行编码? 计算机只能处理二进制数字(0100111),要处理文本,就必须先把文本转为数字才能处理,这个过程就叫编码. 字符的编码 ASCII编码 由于计算机是美 ...

  7. Python学习日记(二)——字符转编码操作

    首先搞清楚:Python3的默认编码是unicode,Python2的默认编码是ASCII码 为什么需要编解码? 打个比方:假如说我做了一个游戏,叫<西游记>,游戏传到了日本去.但是日本人 ...

  8. python文件操作:字符编码与文件处理

    一.字符编码 二.文件处理 一.字符编码 储备知识点: 1. 计算机系统分为三层: 应用程序 操作系统 计算机硬件 2. 运行python程序的三个步骤 1. 先启动python解释器 2. 再将py ...

  9. Python基础编程:字符编码、数据类型、列表

    目录: python简介 字符编码介绍 数据类型 一.Python简介 Python的创始人为Guido van Rossum.1989年圣诞节期间,在阿姆斯特丹,Guido为了打发圣诞节的无趣,决心 ...

  10. Python之字符与编码笔记

    概述 类型 str 字符串 bytes 字节 bytearray 字节数组 字符串编码架构 字符集:赋值一个编码到某个字符,以便在内存中表示 编码 Ecoding:转换字符到原始字节形式 解码 Dec ...

随机推荐

  1. 新前言with留言板

    旧博客也是会用的,但是现在只用博客园写博客,平时csdn的东西也会凑凑热闹 欢迎各位julao来留言板留言 /* ID:lemondi1 LANG:C++ TASK:test */ #include ...

  2. #KM算法#UVA1411 Ants

    题目 在一个平面直角坐标系中,有 \(n\) 个黑点,\(n\) 个白点. 给出一种二分图匹配的方案,使得没有两条由黑白点连接的线段相交 分析 如果线段都不相交,根据三角形的两边之和大于第三边,那么线 ...

  3. #动态规划,组合计数,树状数组,前缀和#F 简单计数题&K 最简单的题

    先膜两位出题人 F 简单计数题 题目 有\(n\)个活动,预约期有\(k\)天,第\(j\)天YC可以获得\(a_j(1\leq a_j\leq n)\)张预约券, 他会在\(n\)个活动中等概率选择 ...

  4. #前缀和优化dp#牛客练习赛71 C 数学考试

    题目 求\(1\sim n\)的排列,有\(m\)个限制条件,第\(i\)个限制条件\(p_i\), 表示前\(p_i\)个数不能是\(1\sim p_i\)的排列,求符合要求的排列的个数. 分析 这 ...

  5. 深入解析 C 语言中的 for 循环、break 和 continue

    C语言中的 for 循环 当您确切地知道要循环执行代码块的次数时,可以使用 for 循环而不是 while 循环 for (语句 1; 语句 2; 语句 3) {   // 要执行的代码块 } 语句 ...

  6. SQL FOREIGN KEY 约束- 保障表之间关系完整性的关键规则

    SQL FOREIGN KEY 约束 SQL FOREIGN KEY 约束用于防止破坏表之间关系的操作.FOREIGN KEY 是一张表中的字段(或字段集合),它引用另一张表中的主键.具有外键的表称为 ...

  7. Buffer 与 Mat 互转

    Linux系统做音视频开发,很多时候要用到opencv,就需要把图片Buffer数据转换成Mat对象来使用 Buffer 转 Mat Mat Buffer2Mat(unsigned char* buf ...

  8. MogDB/OpenGauss数据库中通过参数控制抓取慢sql

    MogDB/OpenGauss 数据库中通过参数控制抓取慢 sql 本文出处:https://www.modb.pro/db/221556 mogdb 数据库中可以通过打开相应的参数抓取慢 sql,该 ...

  9. Tailwind CSS 使用指南

    0x01 概述 (1)简介 Tailwind CSS 官网:https://www.tailwindcss.cn/ Tailwind CSS 是一个 CSS 框架,使用初级"工具" ...

  10. Spring Cloud Sleuth:分布式请求链路跟踪

    Spring Cloud Sleuth:分布式请求链路跟踪 SpringCloud学习教程 SpringCloud Spring Cloud Sleuth 是分布式系统中跟踪服务间调用的工具,它可以直 ...