python中da_Python中字符的编码与解码
1 文本和字节序列
我们都知道字符串,就是由一些字符组成的序列构成串,那么字符又是什么呢?计算机只能识别二进制的东西,那么计算机又为什么会显示我们的汉字,或者是某个字母呢?
由于最早发明使用计算机是美国人,他们为了解决了英语如何在电脑上显示,就制定了一套标准:ASCII ((American Standard Code for Information Interchange): 美国信息交换标准代码),主要用于显示现代英语和其他西欧语言。到目前为止共定义了128个字符,从0-127的二进制数分别对应了相应的字符,这样就将现实中的字符和计算机的二进制联系起来,从而将字符表达显示在计算机上。
随机计算机的普遍,各国有不同的语言,每个国家为了普及计算机的使用,那么如何将各自国家的语言表达在计算机上就成了一个问题。于是,不同的国家都在制定适用自个国家的字符集,比如对于我国来说,就有gbk《汉字内码扩展规范》,它也是将每个字符(字)和计算机的二进制对应起来。那么问题来了,不同的国家使用各自国家的一套规范,在跨国交流时,就会出现文本显示的乱码。于是就有了一套统一的机制Unicode。Unicode(统一码、万国码、单一码),它为每种语言中的每个字符设定了统一并且唯一的二进制编码,以满足跨语言、跨平台进行文本转换、处理的要求。
1.1 字符和字节
目前使用的基本是Unicode定义的字符,从Python3的str对象中获取的元素就是Unicode字符。字符的具体表述取决于所用的编码。编码是在码位和字节序列之间转换时使用的算法。使用最多的是utf-8编码,使用该编码,文本文件可以跨平台显示。把码位转换成字节序列的过程是编码;把字节转换成码位的过程是解码。
编码时使用的编码算法要与解码时使用的解码算法相同,要不然会出现乱码的现象。
1.2 字符与字节的转换
字符是组成字符串有序序列的单个元素,字符可以用上面的编码来理解。字符串按照不同的字符集编码返回字节序列bytes。
字节序列安装不同的字符集解码返回字符串
1 bytes.decode(encoding="utf-8", errors="strict") ->str
2 bytearray.decode(encoding="utf-8", errors="strict") -> str
1.3 bytes与bytearray
Python中内置了两种基本的二进制序列类型:Python 3 引入的不可变bytes类型和Python 2.6 增加的可变bytearray类型(字节数组)
1.3.1 bytes定义
bytes有以下的定义方法:
Definition
Function
bytes()
定义空的bytes
bytes(int)
指定字节的bytes,被0填充
bytes(iteeable_of_ints)
bytes[0,255]的int组成的可迭代对象
bytes(string, encoding[, errors])
等价于string.encode()
bytes(bytes_or_buffer)
immutable copy of bytes_or_buffer 从一个字节序列或者buffer复制出
一个新的不可变的bytes对象
使用b前缀定义
只允许基本ASCII使用字符形式b'abc9';
使用16进制表示b"\x41\x61"
1.3.2 bytes操作
和str类型类似,都是不可变类型,所以很多方法都一样。只不过bytes的方法,输入的是bytes,输出的也是bytes。下面看bytes的基本操作:
b'abcdef'.replace(b'f',b'k')
b'abc'.find(b'b')
bytes.fromhex(string) string必须是2个字符的16进制的形式,比如bytes.fromhex('6162 09 6a 6b00'),空格将被忽略
'abc'.encode().hex() 返回16进制表示的字符串
b'abcdef'[2] 返回该字节对应的数,int类型
1.3.3 bytearray定义
Definition
Function
bytearray()
空bytearray
bytearray(int)
指定字节的bytearray,被0填充
bytearray(iterable_of_ints)
bytearray [0,255]的int组成的可迭代对象
bytearray(string, encoding[, errors])
bytearray 近似string.encode(),不过返回可变对象
bytearray(bytes_or_buffer)
从一个字节序列或者buffer复制出一个新的可变的bytearray对象
1.3.4 bytearray操作
和bytes类型的方法相同:
bytearray(b'abcdef').replace(b'f',b'k')
bytearray(b'abc').find(b'b')
bytearray.fromhex('6162 09 6a 6b00')
bytearray('abc'.encode()).hex()
bytearray(b'abcdef')[2] 返回该字节对应的数,int类型
bytearray是字节型的数组,相当于列表一样,只不过bytearray中存储的是字节形式的序列。它也支持和列表一些相同的操作:
python中da_Python中字符的编码与解码相关推荐
- 在tcp/ip协议中以BigEndian方式的编码与解码
2019独角兽企业重金招聘Python工程师标准>>> package com.tcpip;/*** 在tcp/ip协议中以BigEndian方式的编码与解码* @author ** ...
- java 中文解码_java使用URLDecoder和URLEncoder对中文字符进行编码和解码
摘要: URLDecoder 和 URLEncoder 用于完成普通字符串 和 application/x-www-form-urlencoded MIME 字符串之间的相互转换.在本文中,我们以使用 ...
- C语言中如何输出字符的编码,GB2312中汉字字符的编码在C语言中的输出测试
C语言中ASCII编码表中每一个字符对应的编码,与数字其实是完全一样的. printf("%d\n",1); 对应的输出是1 printf("%c\n& ...
- 【Python】base64模块对图片进行base64编码和解码
图片的base64编码就是可以将一副图片数据编码成一串字符串,使用该字符串代替图像地址. 这样做有什么意义呢?我们知道,我们所看到的网页上的每一个图片,都是需要消耗一个 http 请求下载而来的. 没 ...
- [转载]Unicode中对中文字符的编码
以前写过一篇贴子是写中文在unicode中的编码范围 unicode中文范围,但写的不是很详细,今天再次研究了下unicode,并给出详细的unicode取值范围. 本次研究的unicode对象是un ...
- 计算机英语编码表,在计算机系统中,英文字符的编码一般采用( )。
15.利用超星数字图书馆,计中字符查找<林徽因传>(张清平著)这本书正文共有多少页() 在IPv4中,算机下列IP地址中属于非法的是________. 在下列Internet的应用中,系统 ...
- C语言中如何输出字符的编码,c语言输出字符串(c语言自我介绍编码)
如果我想要限定输出字符串的长度,应该怎么操作. 在C语言中,输入输出字符串有以下两种方式:1 用scanf/printf输入输出.scanf/printf是C语言的格式化输入输出函数,可以用于输入输出 ...
- python 字符的编码和解码
什么是编码 编码是信息从一种形式或格式转换为另一种形式的过程.例如,将字符A使用ascll编码,首先在ascll中找到字符A对应的一个数字,再将该数字转化为二进制形式,供计算机读取.而不同的编码方式中 ...
- signature=b8cae5ae994df93c3fedf622c2a51ac5,javascript中的Base64、UTF8编码与解码详解
Base64编码说明 Base64编码要求把3个8位字节(3*8=24)转化为4个6位的字节(4*6=24),之后在6位的前面补两个0,形成8位一个字节的形式. 如果剩下的字符不足3个字节,则用0填充 ...
最新文章
- 网站显示mysql数据库_如何显示从MySQL数据库的网站iframe?
- gradient设置上下渐变_css3渐变之线性渐变linear-gradient
- 在Ubuntu下面编译WizNote Qt Project
- 2021的行情下如何能够赚到自己认知范围内的钱?一些投资需要补充的内容
- 测试用例的“真相”与“事实” 这9个事实让人扎心!
- Kafka ACL使用实战
- 台服DNF更换Mysql5.6(rpm包安装、二进制安装)
- 【渗透安全】利用腾讯云CDN节点隐藏连接Webshell的真实IP
- php 登陆微博,用新浪微博账号登录(第三方登录)
- python 绘制RGB三维颜色空间色谱图(已实现)
- 介绍ping中的TTL是什么意思
- 在chrome浏览器中屏蔽CSDN页面中的广告
- Simon游戏代码(C语言)
- Java 线程池配置的常见误区
- 小猪的Python学习之旅 —— 12.Python并发之queue模块
- PHP fwrite和file_put_contents 性能对比测试
- 推荐术语:CPM、CPC、CPA、CPI、CTR、CPV、CVR
- 二级域名三级域名设置方法
- 【适配】521- 移动端开发各种兼容适配问题(屏幕、图像、字体与布局等)
- 计算机硬件设备介绍 ppt,计算机硬件设备的认识课件.ppt
热门文章
- mysql drbd pacemaker_corosync+pacemaker+mysql+drbd 实现mysql的高可用
- Java connot reduce_Java8: Reduce方法
- 双目标帕累托优化_多目标稳健性决策规划(MORDM)
- “晶振”拍了拍你,“你知道我是如何工作的吗?”
- 在阿里、腾讯、美团工作有什么区别?
- 程序员崩溃的40个瞬间!(动图)
- 从1985年到2020年,编程语言排行有哪些变化?
- 自动增益(AGC)算法FPGA实现
- deepin编译Linux内核,为Deepin编译Linux 5.10内核的悲伤故事经历:从入门到卸载
- Linux复位usb hub,Linux USB subsystem --- USB Hub initialize