Python基础之字符的编码
参考原文
为什么要进行编码?
计算机只能处理二进制数字(0100111),要处理文本,就必须先把文本转为数字才能处理,这个过程就叫编码。
字符的编码
ASCII编码
由于计算机是美国人发明的,最早只有127个字符被编码到计算机里,包括大小写英文字母、数组和一些符号,这个编码表被称为ASCII编码,比如大写字母A的编码是65,小写字母z的编码是122。
但是用来处理中文显然一个字节是不够的,至少需要2个字节,而且不能和ASCII原有的编码冲突。所以中国制定了GB2312编码来将中文编进去。但是可以想象,全世界有上百中语言,各国有各国的标准,日本把日文编到Shift_JIS里,韩国把韩文编到Euc-kr里。这肯定会出现冲突,结果就导致在多语言的混合的文本中显示出来会有乱码。
Unicode编码
因此,Unicode应运而生。Unicode将所有的语言都统一到一套编码里,这样就不会有乱码问题了。Unicode标准也在不断发展,但最常用的是用2个字节表示1个字符(偏僻的字符,就需要4个字节)
ASCII和Unicode区别:ASCII编码是一个字节代表一个字符,Unicode2个字节表示一个字符,对于汉字来说超出了ASCII的编码范围,对于英语字母两者皆可编码,但Unicode编码就要比ASCII编码多用一倍的存储空间。所以引出了下面的编码方式。
UTF-8编码
UTF-8编码(可变长编码)把一个Unicode字符根据不同的数字大小编码成1-6个字节,常用的英文字母被编码成1个字节,汉字通常是3个字节,只有生僻的字符才会被编码成4-6个字节。ASCII编码实际上是UTF-8编码的一部分。
比较
在计算机内存中统一使用Unicode编码,当需要保存到硬盘或传输的时候,就转换为UTF-8编码。例如:用记事本编辑的时候,从文件读取的UTF-8字符被转换为Unicode字符到内存里,编辑完成后,保存时又将Unicode字符转换为UTF-8保存到文件中。
Python基础之字符的编码的更多相关文章
- python基础4 ----字符编码
python基础---字符编码 一.了解字符编码 1. 文本编辑器存取文件的原理(nodepad++,pycharm,word) 打开编辑器就打开了启动了一个进程,是在内存中的,所以在编辑器编写的内容 ...
- 第二篇.2、python基础之字符编码
一 了解字符编码的知识储备 一 计算机基础知识 二 文本编辑器存取文件的原理(nodepad++,pycharm,word) #1.打开编辑器就打开了启动了一个进程,是在内存中的,所以,用编辑器编写的 ...
- 第1章 Python基础之字符编码
阅读目录 一.什么是字符编码 二.字符编码分类 三.字符编码转换关系 3.1 程序运行原理 3.2 终极揭秘 3.3 补充 总结 回到顶部 一.什么是字符编码 计算机要想工作必须通电,也就是说'电'驱 ...
- (Python基础)字符编码与转码
ASCII(American Standard Code for Information Interchange,美国标准信息交换代码)是基于拉丁字母的一套电脑编码系统,主要用于显示现代英语和其他西欧 ...
- python基础_字符编码
字符编码的历史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII 阶段二:为了满足中文,中国人定制了GBK 阶段三:各国有各国的标准,就会不可避免地出现冲突,结果就是,在多语言混合的 ...
- python基础之字符编码(一)
一.什么是字符编码 计算机要想工作必须通电,也就是说‘电’驱使计算机干活,而‘电’的特性,就是高低电压(高低压即二进制数1,低电压即二进制数0),也就是说计算机只认识数字 编程的目的是让计算机干活,而 ...
- Python基础之字符编码,文件操作流与函数
一.字符编码 1.字符编码的发展史 阶段一:现代计算机起源于美国,最早诞生也是基于英文考虑的ASCII ASCII:一个Bytes代表一个字符(英文字符/键盘上的所有其他字符),1Bytes=8bit ...
- python学习第四天:python基础(字符编码和乱码到底咋回事儿)
字符编码 这得从字符编码开始说起: 字符串也是一种数据类型,但是,字符串比较特殊的是还有一个编码问题.因为计算机只能处理数字,如果要处理文本,就必须先把文本转换为数字才能处理. 最早的计算机在设计时采 ...
- python基础知识3---字符编码
阅读目录 一 了解字符编码的知识储备 二 字符编码介绍 三 字符编码应用之文件编辑器 3.1 文本编辑器之nodpad++ 3.2 文本编辑器之pycharm 3.3 文本编辑器之python解释器 ...
随机推荐
- 嵌入式开发之函数解析---ip地址2进制转字符inet_ntoa 调用中只生效一次
inet_addr() 简述:将一个点间隔地址转换成一个in_addr. #include <winsock.h> unsigned long PASCAL FAR inet_addr ...
- 第一章:Android系统介绍android虚拟机
学习android,我们是要了解他的历史的,这里我也就不在累述什么大家都知道的东东了,简单的介绍下内部的相关内容: 1:android虚拟机 我们学习java知道java用的是JVM虚拟机,而开发An ...
- jeasyUI treegrid 的 reload 和 getChanges
看上去,treegrid继承自datagrid,因此,datagrid有的,treegrid也会有. 比如说,getChanges,翻看那些网络教程,绝大多数都没提treegrid有这个东东.但是,t ...
- MyEclipse,Eclipse注释规范模板
注释的作用:myeclipse中java文件头注释格式设置,最终可用于javadoc.exe生成API文档,同时提高了代码的可读性 设置方法: windows->preferences-> ...
- 【bzoj4597】 [Shoi2016]随机序列
可以发现加减号之间可以互相抵消. 真正加到答案里的只有一些前缀积. 记s[i]为a[1]*a[2]*a[3]...*a[i].那s[i]在答案中出现的次数就是2*3^(n-i-1); 修改一个数只会对 ...
- beego3---gohttp底层实现
package main //gohttp底层实现,通过gohttp不是通过beego实现的输出 // import ( "io" "log" "ne ...
- JavaScript中的string interpolation
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Template_literals var a = 5; var b ...
- POJ 2629:Common permutation
Common permutation Time Limit: 1000MS Memory Limit: 65536K Total Submissions: 5510 Accepted: 168 ...
- [odb-users] query results not being cached?
Burton, Craig crburton at tnsi.comWed Jun 6 13:58:03 EDT 2012 Previous message: [odb-users] query re ...
- FreeMarker:模板开发指南
ylbtech-FreeMarker:模板开发指南 1.返回顶部 1. Section Contents 入门 模板 + 数据模型 = 输出 数据模型一览 模板一览 数值,类型 基本内容 类型 模板 ...