博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
python的编码和解码
阅读量:4624 次
发布时间:2019-06-09

本文共 1232 字,大约阅读时间需要 4 分钟。

参考地址: 

https://blog.csdn.net/u013066244/article/details/53057411

https://www.cnblogs.com/shine-lee/p/4504559.html

1. 编码和解码

编码encode:真实字符与二进制串的对应关系,真实字符→二进制串
解码decode:二进制串与真实字符的对应关系,二进制串→真实字符

 str转bytes叫encode,bytes转str叫decode,如上面的代码就是将抓到的字节流给decode成unicode数组

 

2. ASCII 以及UTF-8

ASCIII码是一个字节8个bit位标识一个字符,首位全是0,表示的字符集不够

UNICODE编码系统是为了表达任意语言设计的,为了防止存储上的冗余,(比如:对应的ASCII码的部分),采用了变长编码,但是变长编码为解码带来了困难,无法识别几个字节表示一个字符。

UTF-8是针对unicode变长编码设置的一种前缀码,根据前缀去判断是几个字节表示一个字符。

如果一个字节的第一位是0,则这个字节单独就是一个字符,如果第一位是1,则连续多少个1,就表示当前字符占用多少字节

 

3. python中的解码和编码

在python里面,编码解码其实是不同编码系统之间的转换,默认情况下,转换目标是UNICODE,即编码UNICODE-> STR, 解码: str -> UNICODE。 其中STR指的是字节流。

而:str.decode 是将字节流str按照指定的解码方式进行解码,并且转换成utf-8形式, u.encode是将unicode类按照指定的方式进行编码转换成字节流str.

注意:调用encode方法的是unicode对象生成的字节流。

 

字符就是unicode字符,字符串就是unicode字符数组

如果用以下代码测试:

print('a'=='\u0061')

结果为True,说明两者是一样的

还有要注意的是,终端默认的编码格式是gbk,windows cmd中可以通过chcp查看以及改变,也可以到注册表修改终端默认编码(HKEY_CURRENT_USER console或者powershell下的codepage),936为简体中文,65001为utf8,两者都可显示中文,但为了方便中文输入,我将其默认设为936 

 

4. 文件中的编码格式

保存文本时也有编码格式,比如txt文件保存可选择则ASCII、utf8等,对py文件可在
前两行注明编码方式# -*- coding: UTF-8 -*-
在python中读取文件

 

5. 编码名称和用途

 

编码名称 用途
utf8 所有语言
gbk 简体中文
gb2312 简体中文
gb18030 简体中文
big5 繁体中文
big5hkscs 繁体中文

转载于:https://www.cnblogs.com/srialy/p/9466716.html

你可能感兴趣的文章
阿里中间件技术及双十一实践--中间件总体介绍
查看>>
DNS简介
查看>>
charactercontroller里simplemove函数与move函数的介绍
查看>>
update join
查看>>
复杂链表的复制
查看>>
利用docker-machine安装swarm
查看>>
javascript字符类型操作函数
查看>>
thinkphp批量删除的实现
查看>>
请求SpringBoot 服务接口时的中文乱码问题
查看>>
忆少年(七绝)
查看>>
马克思主义与改革(专著)
查看>>
centos7安装hadoop2.6.1,详细教程
查看>>
sql语句select group by order by where一般先后顺序
查看>>
网络1
查看>>
关于jQuery方法解析(一)append-参数设置问题
查看>>
html position display
查看>>
前端学习路线
查看>>
云计算1
查看>>
MVC项目经验杂谈
查看>>
wc命令
查看>>