Python编码解码
原文地址
任何数据在计算机中都是以二进制形式表示的,文本计算机中数据的主要表示方式之一,目前映射文字与二进制码的规则有多种。
- 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编码解码相关推荐
- python 编码 解码 读写文件
python基础语法6 编码解码 encode编码与decode解码 读写文件 编码解码 计算机是以二进制(0或1)存储的,以字节为单位,1byte=8bit,1KB=1024B:1MB=1024KB ...
- python编码解码的过程_使用Python过程中的编码和解码
编码和解码的问题纠结了我很久了,对他一直只有是是而非的理解,好像是那么回事,但是又不懂,今天终于来认真解决一下这个问题,总结一下大神们的回答,做一下笔记. 首先,我们知道,计算机中的所有数据都以二进制 ...
- python 编码解码原理_Python的编码解码问题
这两天进行网抓,被python的编解码问题搞得一脸懵比,虽然网上能够搜到各种各样的解决方案,不乏从原理到实践的精品,然而似乎却并不奏效,经自行摸索,本文特针对编解码问题,作以下最简单却最实用的总结: ...
- python 编码解码原理_Python JSON编解码方式原理详解
这篇文章主要介绍了Python JSON编解码方式原理详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下 概念 JSON(JavaScript Ob ...
- python编码解码单词_在使用w2v时python中的编码问题
我正在使用word2vec模型在python中编写我的第一个应用程序. 这里是我的简单的代码在使用w2v时python中的编码问题 import gensim, logging import sys ...
- jwt python 编码 解码
代码示例 import jwt# jwt密钥 JWT_SECRET = '04147af1e42c20c3b50bdc111774346e'# 编码 def encode(payload):retur ...
- 8.文本处理(编码解码/文件操作)
本章主要从文本处理.系统监控.日志.FTP.邮件监控.微信监控等方面来介绍基础运维的相关知识. 8.1 文本处理 在日常的运维工作中一般都离不开与文本,如日志分析.编码转换.ETL加工等.本节从编码原 ...
- python使用base64编码解码数据
python使用base64编码解码数据 base64模块是用来作base64编码解码,常用于小型数据的传输.编码后的数据是一个字符串,其包括a-z.A-Z.0-9./.+共64个字符,即可用6个字节 ...
- python email模块详解_python模块之email: 电子邮件编码解码 (一、解码邮件)-阿里云开发者社区...
python自带的email模块是个很有意思的东西,它可以对邮件编码解码,用来处理邮件非常好用. 处理邮件是一个很细致的工作,尤其是解码邮件,因为它的格式变化太多了,下面先看看一个邮件的源文件: Re ...
最新文章
- bootstrap datatimepicker 汉化
- 由苹果审核悲剧引发的“血案”
- 面试之什么是java虚拟机
- 【WebRTC---源码篇】(二)PeerConnectionFactory
- PHP使用SMTP邮件服务器
- 如何把一个float存到一个长度为4的char数组中?
- ConstantSourceNode
- 《Python数据可视化编程实战》—— 1.2 安装matplotlib、Numpy和Scipy库
- VB589语音识别芯片开发
- AJAX IE7清除缓存
- Windows 禁用U盘的程序,不用注册表方式。
- 有关微信小程序云数据库修改数据的坑
- 网站推广优化教程集锦
- sub 对应php什么函数,subtotal函数的使用方法1-9分别什么意思
- js加mysql写邮箱找回密码_邮箱找回密码 · woyong/docs Wiki · GitHub
- 计算机等级描述,关于计算机机型描述中,错误的是( )。
- 如何将.hwbk批量修改成.jpg 【实测成功】
- 解决TypeError:Cannot read properties of undefined并深入解读TypeError错误类型
- 智慧家庭解决方案-最新全套文件
- Linux学习笔记--12(iptables与firewalld)