原文地址

任何数据在计算机中都是以二进制形式表示的,文本计算机中数据的主要表示方式之一,目前映射文字与二进制码的规则有多种。

  • ASCII码

其中ASCII码是一种比较早的编码规则,因为最早的计算机出现在美国,当时这种编码只考虑了对英文的编码,包括字母、数字和一些符号,总共有128个,只用7位二进制数就可以表示,另外又加了一位最高位做扩展用,组成一个字节的数据即可全部表示。

  • 控制字符33个
二进制 十进制 十六进制 缩写 Unicode 表示法 脱出字符 表示法 名称/意义
0000 0000 0 00 NUL ^@ 空字符(Null)
0000 0001 1 01 SOH ^A 标题开始
0000 0010 2 02 STX ^B 本文开始
0000 0011 3 03 ETX ^C 本文结束
0000 0100 4 04 EOT ^D 传输结束
0000 0101 5 05 ENQ ^E 请求
0000 0110 6 06 ACK ^F 确认回应
0000 0111 7 07 BEL ^G 响铃
0000 1000 8 08 BS ^H 退格
0000 1001 9 09 HT ^I 水平定位符号
0000 1010 10 0A LF ^J 换行键
0000 1011 11 0B VT ^K 垂直定位符号
0000 1100 12 0C FF ^L 换页键
0000 1101 13 0D CR ^M CR (字符)
0000 1110 14 0E SO ^N 取消变换(Shift out)
0000 1111 15 0F SI ^O 启用变换(Shift in)
0001 0000 16 10 DLE ^P 跳出数据通讯
0001 0001 17 11 DC1 ^Q 设备控制一(XON 激活软件速度控制)
0001 0010 18 12 DC2 ^R 设备控制二
0001 0011 19 13 DC3 ^S 设备控制三(XOFF 停用软件速度控制)
0001 0100 20 14 DC4 ^T 设备控制四
0001 0101 21 15 NAK ^U 确认失败回应
0001 0110 22 16 SYN ^V 同步用暂停
0001 0111 23 17 ETB ^W 区块传输结束
0001 1000 24 18 CAN ^X 取消
0001 1001 25 19 EM ^Y 连线介质中断
0001 1010 26 1A SUB ^Z 替换
0001 1011 27 1B ESC ^[ 退出键
0001 1100 28 1C FS ^\ 文件分割符
0001 1101 29 1D GS ^] 组群分隔符
0001 1110 30 1E RS ^^ 记录分隔符
0001 1111 31 1F US ^_ 单元分隔符
0111 1111 127 7F DEL ^? Delete字符

引自 维基百科_ASCII

  • 显示字符95个

引自 常用ASCII码值

可想而知就算把最高位进行了扩展,也只能表示256个字符,而世界上也不止英语一种语言。

  • Unicode

Unicode(中文:万国码、国际码、统一码、单一码)是计算机科学领域里的一项业界标准。它对世界上大部分的文字系统进行了整理、编码,使得电脑可以用更为简单的方式来呈现和处理文字。

Unicode 伴随着通用字符集的标准而发展,同时也以书本的形式[1]对外发表。Unicode 至今仍在不断增修,每个新版本都加入更多新的字符。当前最新的版本为2019年5月公布的12.1.0[2],已经收录超过13万个字符(第十万个字符在2005年获采纳)。Unicode涵盖的数据除了视觉上的字形、编码方法、标准的字符编码外,还包含了字符特性,如大小写字母。

引自 维基百科_Unicode

    • utf-8

      Unicode原有32位,即用4个字节表示,可是对于诸如英文这样的文字,只用7位就能表示,用32位来表示就有很多闲置位,会白白浪费很多空间

      utf-8是为了应对这种情况的一种动态编码方式,最低用8位表示,其中

      文字 位数
      英文 8bit(1Byte)
      欧洲文字 16bit(2Byte)
      中文 24bit(3Byte)
    • 此外还有utf-16,utf-32等编码方式

  • GBK编码

汉字内码扩展规范,称GBK,全名为**《汉字内码扩展规范(GBK)》1.0版**,由中华人民共和国全国信息技术标准化技术委员会1995年12月1日制订,国家技术监督局标准化司和电子工业部科技与质量监督司1995年12月15日联合以《技术标函[1995]229号》文件的形式公布。 GBK共收录21886个汉字和图形符号,其中汉字(包括部首和构件)21003个,图形符号883个。

引自 维基百科_汉字内码扩展规范

Windows系统中文版的默认编码方式是gbk

其实并没有涵盖所有的中文,所有的中文字符大概有9万+

  • 其他

1,各个编码之间的二进制,是不能互相识别的,会产生乱码。
2,文件的储存,传输,不能是unicode(只能是utf-8 utf-16 gbk,gb2312,asciid等)

py3:
str 在内存中是用unicode编码,其在存储和传输时需要先转码
bytes类型

    • 对于英文:

      str  : 表现形式:s = 'alex'编码方式:010101010  unicode
      bytes: 表现形式:s = b'alex'编码方式: 000101010  utf-8 gbk。。。。
      
    • 对于中文:

       str  : 表现形式:s = '中国'编码方式: 010101010  unicodebytes :表现形式:s = b'x\e91\e91\e01\e21\e31\e32'编码方式: 000101010  utf-8 gbk。。。。
      
  • 通过Python体会一下编码解码

    s = '汉字'
    print(s)
    # 汉字
    s2b = s.encode('utf-8')     # 用utf8编码成二进制
    print(s2b)
    # b'\xe6\xb1\x89\xe5\xad\x97'
    b2gbk = s2b.decode('gbk')   # 用gbk解码发现乱码
    print(b2gbk)
    # 姹夊瓧
    b2utf8 = s2b.decode('utf-8')    # 用utf8解码正确get到原本文字
    print(b2utf8)
    # 汉字
    

Python编码解码相关推荐

  1. python 编码 解码 读写文件

    python基础语法6 编码解码 encode编码与decode解码 读写文件 编码解码 计算机是以二进制(0或1)存储的,以字节为单位,1byte=8bit,1KB=1024B:1MB=1024KB ...

  2. python编码解码的过程_使用Python过程中的编码和解码

    编码和解码的问题纠结了我很久了,对他一直只有是是而非的理解,好像是那么回事,但是又不懂,今天终于来认真解决一下这个问题,总结一下大神们的回答,做一下笔记. 首先,我们知道,计算机中的所有数据都以二进制 ...

  3. python 编码解码原理_Python的编码解码问题

    这两天进行网抓,被python的编解码问题搞得一脸懵比,虽然网上能够搜到各种各样的解决方案,不乏从原理到实践的精品,然而似乎却并不奏效,经自行摸索,本文特针对编解码问题,作以下最简单却最实用的总结: ...

  4. python 编码解码原理_Python JSON编解码方式原理详解

    这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 JSON(JavaScript Ob ...

  5. python编码解码单词_在使用w2v时python中的编码问题

    我正在使用word2vec模型在python中编写我的第一个应用程序. 这里是我的简单的代码在使用w2v时python中的编码问题 import gensim, logging import sys ...

  6. jwt python 编码 解码

    代码示例 import jwt# jwt密钥 JWT_SECRET = '04147af1e42c20c3b50bdc111774346e'# 编码 def encode(payload):retur ...

  7. 8.文本处理(编码解码/文件操作)

    本章主要从文本处理.系统监控.日志.FTP.邮件监控.微信监控等方面来介绍基础运维的相关知识. 8.1 文本处理 在日常的运维工作中一般都离不开与文本,如日志分析.编码转换.ETL加工等.本节从编码原 ...

  8. python使用base64编码解码数据

    python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...

  9. python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...

    python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...

最新文章

  1. bootstrap datatimepicker 汉化
  2. 由苹果审核悲剧引发的“血案”
  3. 面试之什么是java虚拟机
  4. 【WebRTC---源码篇】(二)PeerConnectionFactory
  5. PHP使用SMTP邮件服务器
  6. 如何把一个float存到一个长度为4的char数组中?
  7. ConstantSourceNode
  8. 《Python数据可视化编程实战》—— 1.2 安装matplotlib、Numpy和Scipy库
  9. VB589语音识别芯片开发
  10. AJAX IE7清除缓存
  11. Windows 禁用U盘的程序,不用注册表方式。
  12. 有关微信小程序云数据库修改数据的坑
  13. 网站推广优化教程集锦
  14. sub 对应php什么函数,subtotal函数的使用方法1-9分别什么意思
  15. js加mysql写邮箱找回密码_邮箱找回密码 · woyong/docs Wiki · GitHub
  16. 计算机等级描述,关于计算机机型描述中,错误的是( )。
  17. 如何将.hwbk批量修改成.jpg 【实测成功】
  18. 解决TypeError:Cannot read properties of undefined并深入解读TypeError错误类型
  19. 智慧家庭解决方案-最新全套文件
  20. Linux学习笔记--12(iptables与firewalld)

热门文章

  1. Tcl -- eval
  2. 贾其萃 : 笃行实践 筑梦扬帆 | 提升之路系列(二)
  3. 实现word文档在线编辑
  4. Python中and和or的运算规则,短路计算
  5. aspnetdb.mdb数据库介绍
  6. 网站向bing搜索提交URL
  7. 游戏系统开发设计分享
  8. Winform从入门到精通(8)——RichTextBox(史上最全)
  9. 对计算的理解计算机科学导论论文,计算机科学导论论文
  10. Navicat Premium和Navicat for MySQL哪个好用?