python教程3.3:字符和编码

news/2024/10/11 2:27:23

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程序⾥。 从此,程序们⼿牵⼿过上了快乐的⽣活。

 16进制

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

 9、不同字符的转换

GBK编码的字符如何转成utf-8存储

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/27398.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

以React16.4为界限,比较生命周期的异同

一、整体流程简介: 新版:旧版:二、比较 通过两个图的对比,可以发现: 1.生命周期都包含创建、更新、销毁; 2.新版本减少了以下三种方法:componentWillMount componentWillReceiveProps componentWillUpdate其实这三个方法仍然存在,只是在前者加上了UNSAFE_前缀,如UNSAFE…

试了下playground-续7

第六回,FUN WITH IMAGES -- ASCII ART 这一阵是算不上难度的了,也不怪,是第二章的第一节,就是换个类型出个接引题。代码大致分析清楚了,argparse是熟库了,在这里使用上也简单,就保留了。就源码做了删减,参数也调整了,像cols选择100而不是80,scale实测0.43-0.45都可,…

CSS JS Effect – 用 wheel 模拟 scroll

前言 在 用 JavaScript 实现 position sticky 文章中,我提到了用 wheel 来模拟 scroll 效果。 这篇来说说具体怎么实现,挺简单的哦。Preparation table.html<div class="container"><table><thead><tr><th>First Name</th><…

docker简单笔记

这里不说基础概念的东西,直接上车出发指令docker-compose --helpdocker-compose up 会自动下载运行依赖,然后跑到容器隔离环境中 docker-compose down --rmi all 删除由Docker Compose管理的所有容器安装 (我的版本20.10.5) 简单例子 如果遇到问题可以去终端检查 …

Linux课程机房虚拟机

Linux课程机房虚拟机 机房虚拟机(默认不能联网的): 百度网盘:https://pan.baidu.com/s/1WqSvqB3Y7b_D4690CDBlJA?pwd=augc 123网盘:https://www.123pan.com/s/tQ0UVv-LiolA.html提取码:F4xm ‍ 联网使用说明: 虚拟机 -> 设置 -> 网络适配器 -> 已连接 -> 重…

生日快乐

今天5月4. 五四运动什么的也不用我讲点什么了,估计咱谁也不比谁知道的多多少 讲点别的. 今天是爱丽丝的生日(1852.5.4) 经过数月的努力终于从贴吧上得知了爱丽丝的生日 没想到就在今天 真有缘分啊( 这个爱丽丝是真实存在的人物 《爱丽丝梦游仙境》就是以她为原型的 放张图(萝…

获取正确微软ISO镜像的方法

简介 如何找到正确的微软ISO镜像?这是很多新手遇到的问题,到处搜索找不到关键词,下载了很多夹带木马病毒的。 我就介绍一下我获取正确微软ISO镜像的方法。 KMS激活 相信大部分人都是要找能够KMS激活的版本,什么换序列号之类的操作就算了。 CN_WIN、SW_DVD9、SW_DVD5三种开…

mysql 锁,和加锁机制

背景间隙锁是MySQL在RR可重复读隔离级别下用来修复幻读才引入的一种锁,间隙锁也只有在RR可重复读隔离级别下才会存在,如果是在RC读已提交隔离级别下,是没有间隙锁的存在的。另外,我们也知道,幻读这种现象也只有在当前读的时候才会发生,在一致性快照读的情况下是没有幻读现…