一、字节串和字符串 

字符是人类能够识别的符号,而这些符号要保存到计算的存储中就需要用计算机能够识别的字节来表示。

二、编码集

1. ASCII编码:

127个字母 8个数据位足够存储字母、数字、符号,最大支持到0x7F

2. GB2312编码

每个汉字占据2个字节(高位和低位),16个数据。GB2312是对ASCII的中文扩展,共包含7000多个汉字。是计算机发展到中国后发展起来的编码,检测高位和低位,如果同时大于0x7F,则认为是GB2312,否则认为是ASCII编码

3. GBK(1995)和GB18030(2005/2000)

每个汉字占据2个字节,由于汉字的数量太大,GB2312不能满足需求。GBK包括了GB2312的所有内容,
  同时增加了近20000个新的汉字(包括繁体)和符号 。只要求高位大于0x7F,低位可以小于0x7F,认为是中文。 
      >  国家标准GB18030-2000《信息交换用汉字编码字符集基本集的补充》是我国继GB2312-1980和

GB13000-1993之后最重要的汉字编码标准,包含多种我国少数民族文字,其中收入汉字70000余个。

4.Unicode编码

> 定长存储, 将所有语言都统一到一套编码集,通常使用2个字节,有的是4个字节。收录很全。

分为17个面,基本面采用2个字节,普通中文子也在基本面中,另外16个面是4个字节。

  不兼容ASCII码,即存储的时候,对ASCII码前面补0,导致存储的数据变大。

5. utf-8---变长存储

> 国际标准组织(ISO)制定英文字符使用1个字节,沿用原来的ASCII码
        > 使用1~4个字节表示一个符号,中文存储使用3个字节(ascii码中的内容用1个字节保存\欧洲的字符
用2个字节保存\东亚的字符用3个字节保存\特殊符号用4个字节)
        > Unicode是内存编码表示方案(规范),而utf-8是如何保存和传输Unicode的方案(实现)
        > 优点:虽然内存汇总的数据都是Unicode,但当数据保存到磁盘或者用于网络传输时,使用utf-8会节省更
多的流量和硬盘空间。

如何判断几个字节表示一个字符:

每个字节添加识别位,其中高位识别位为4位,低位识别位为2位。判断高位字节开头有几个1,可以确定共有几个字节来表示一个字符。

6. utf-8和Unicode对应关系

utf-8去掉识别位,变成unicode

三、编码和解码

  • 编码 将字符转换为对应的二进制序列的过程叫做字符编码;
  • 解码 将二进制序列转换为对应的字符的过程叫做字符解码.

  • py文件的创建:

文本编辑器在内容没有保存前,内容以编辑器默认编码形式保存在内存中。pycharm默认UTF-8,查看方法:

import sys
print(sys.getdefaultencoding())
  • py文件的编译:

如果我们点击运行按钮或者在命令行运行该文件时,py解释器这个软件就会被调用,打开文件,然后解码存在磁盘上的bytes数据成unicode数据,这个过程和编辑器是一样的,不同的是解释器会再将这些unicode数据翻译成C代码再转成二进制的数据流,最后通过控制操作系统调用cpu来执行这些二进制数据,整个过程才算结束。

#coding:utf8

因为如果py2解释器去执行一个utf8编码的文件,就会以默认地ASCII去解码utf8,一旦程序中有中文,自然就解码错误了,所以我们在文件开头位置声明 #coding:utf8,其实就是告诉解释器,你不要以默认的编码方式去解码这个文件,而是以utf8来解码。而py3的解释器因为默认utf8编码,所以就方便很多了。

四、字符编码转换

图片转载自云游道士的博客

编码集---解码和编码相关推荐

  1. js编码java解码_js编码处理(转)

    1.使用 JS中的 encodeURIComponent或 encodeURI方法. 说明: encodeURIComponent(String) 对传递参数进行设置.不编码字符有 71个: !, ' ...

  2. jq 编码 php解码,jQuery编码转化base64通过AJAX上传

    这次给大家带来jQuery编码转化base64通过AJAX上传,jQuery编码转化base64通过AJAX上传的注意事项有哪些,下面就是实战案例,一起来看一下. 本文实例讲述了jQuery实现文件编 ...

  3. js编码java解码_Js编码和Java后台解码

    注: 在使用get提交,url传递参数的时候,会带来中文乱码的问题,对此可以使用js编码来解决. Js编码的几种方式区别: 1.window.escape()与HttpUtility.UrlEncod ...

  4. 中日文字编码转换_全网最全面、全详细的编码、解码知识!!!

      温馨提示:  本文大约4282字,阅读完大概需要3-5分钟,希望您能耐心看完,倘若你对该知识点已经比较熟悉,你可以直接通过目录跳转到你感兴趣的地方,希望阅读本文能够对您有所帮助,如果阅读过程中有什 ...

  5. java 流 改变编码_Java-IO流之转换流的使用和编码与解码原理

    一.理论: 1.字符流和字节流区别是什么? 字符流=字节流+编码集,在实际读取的时候其实字符流还是按照字节来读取,但是会更具编码集进行查找编码集字典解析相应的字节,使得一次读取出一个字符: 2.什么是 ...

  6. iOS端URL编码和解码过程

    一.URL含义 1.URL定义 URL 是Uniform Resource Locator 的缩写,统一资源定位符,对可以从互联网上得到的资源的位置和访问方法的一种简洁的表示,是互联网上标准资源的地址 ...

  7. 全网最全面、全详细的编码、解码知识!!!

    文章标题 一: 编码江湖之初恩怨 二: 编码江湖之"乱码"家族 三: 江湖规则之基础知识 Bit(位) Byte(字节) 字符 字符集 字符编码 字符集与字符编码的区别 查看电脑默 ...

  8. C# Socket编程(3)编码和解码

    在网络通信中,很多情况下:比如说QQ聊天,通讯双方直接传递的都是字符信息.但是字符信息并不能够直接通过网络传输,这些字符集必须先转换成一个字节序列后才能够在网络中传输,于是这里就产生了编码和解码的概念 ...

  9. Prthon编码和解码/is 和 ==

    一. is 和 == 的区别 小数据池 数字小数据池的范围 -5 ~ 256 字符串中如果有特殊字符他们的内存地址就不一样 字符串中单个*20以内他们的内存地址一样,单个*21以上内存地址不一致 1 ...

最新文章

  1. mysql 5.x 安装_mysql 5.5.x zip直接解压版安装方法
  2. 让latex写论文更方便的几个工具
  3. 荣大速印机维修手册_荣大佳文一体机(速印机)故障及排除方法
  4. 在visualc++可以运行的程序在linux下怎么不能,Linux环境下C++只允许单个程序运行...
  5. plsql提示列快捷键_20种VSCode快捷键清单,助你更快编码
  6. 最简单的嵌套循环,一句话即可。适合repeater,dropdownlist,gridview等等
  7. docker基础1--下载制定docker镜像的两种方法:
  8. web网站整体变灰色仅仅需要两行代码
  9. 虚拟视频驱动vivi.c分析(linux-3.4.2版本)
  10. maven项目,pom.xml文件变成小虫子(蜘蛛)解决办法
  11. 工具类-汉字转为汉语拼音首字母
  12. PYTHON文件操作(读/写文件)
  13. 超级机器人大战A(GBA)帅气攻略(3)
  14. python turtle如何写字_python的turtle库可以利用代码写字吗?
  15. 移动计算技术--AODV(Ad hoc 按需距离矢量法)
  16. 一款程序员值得拥有的机械键盘:Keychron K3
  17. 天梯赛 L2 列车调度
  18. 在指定的日期和时间关机
  19. ESXI中损坏虚拟机数据如何找回
  20. 常见WINDOWS运行命令

热门文章

  1. 【图片浏览器 Objective-C语言】
  2. 冒泡排序、冒泡排序动画、冒泡排序代码、冒泡排序教程
  3. js控制屏幕双屏显示
  4. 数字电视图像相关的基本概念
  5. 手持弹幕android制作,手持弹幕LED字幕屏
  6. 有手就行的移动平均法、指数平滑法的Excel操作,用来时间序列预测
  7. 【Python】strip() 方法
  8. Postgres-XL 简析
  9. GetElementById
  10. 高新技术企业申报流程