编码(decode与encode)
目录
- 1. 什么是编码
- 2. 编码方式属性
- 3. decode与encode
1. 什么是编码
事实上计算机只认0或1,然而却可以通过计算机来显示文本,这就是靠编码来实现的。
编码其实就是约定的一个协议,比如ASII编码约定了大写字母A对应十进制65,那么在读取一个字符串的时候,看到65,计算机就知道这是大写字母A的意思
由于计算机是美国发明的,所以这个ASCII编码设计时只采用1个字节存储,包含了大小写英文字母、数字和一些符号。但是计算机在全世界普及之后,ASCII编码就成了一个瓶颈,因为1个字节是完全不足以表示各国语言的
大家知道英文只用26个字母就可以组成不同的单词,而汉字光长用字就有好几千个,至少需要2个字节才足以存放,所以后来中国制定了GB2312,用于对汉字进行编码
然后的然后日本,韩国也制定了各自的编码,然后就出现冲突了,就导致了最初计算机上总是容易看到乱码的现象
为了解决这个问题,Unicode编码应运而生。Unicode组织的想法最初也很简单,创建一个足够大的编码,将所有国家的编码都加进来,进行统一标准。
随着问题的解决,新的问题也出现了,如果你写的文本只包含英文和数字,那么用Unicode编码就显得特别浪费存储空间(使用ASCII编码只占用一半的存储空间),所以本着能省一点是一点的精神,Unicode还创造了多种实现方式
比如常见的UTF-8编码就是Unicode的一种实现方式,它是可变长编码。
简单来说就是,当文本是ASCII编码的字符时,它用1个字节存放;而当文本是其他Unicode字符的情况,它将按一定的算法转换,每个字符使用1~3个字节存放。
2. 编码方式属性
GB2312 | UTF-8 | Unicode |
---|---|---|
GB2312编码专门用来解决中文编码的,是双字节的,并且不论中英文都是双字节的;包含全部中文字符;总的来说GB2312编码方式的编码是以中国国情而创造的,在国际上的兼容性不好。 | UTF-8 编码是Unicode的一种实现方式,因为对于大多数语言,只需要一个字节就能够编码,如果都采用Unicode会极大浪费,于是出现了可变长编码UTF-8。它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。另外,如果是外国人访问你的GB2312网页,需要下载中文语言包支持。访问UTF-8编码的网页则不出现这问题。可以直接访问。这也是为什么大多数的网页是使用UTF-8编码而不是GB2312。 | 目前几乎收纳了全世界大部分的字符。所有的字符都有唯一的编号,这就解决了解码的冲突!但是,unicode把大家都归纳进来,却没有为编码的二进制传输和二进制解码做出规定。 |
3. decode与encode
decode | encode |
---|---|
decode的作用是将其他编码的字符串转换成unicode编码,如str1.decode(‘gb2312’),表示将gbk编码的字符串str1转换成unicode编码。 | encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode(‘gb2312’),表示将unicode编码的字符串str2转换成gbk编码。 |
- encode:用于编码
str.encode(encoding='UTF-8',errors='strict')
# encoding -- 要使用的编码,如"UTF-8"
# errors -- 设置不同错误的处理方案
该方法返回编码后的字符串
u='我喜欢你啊!'
str1=u.encode('gb2312')
print(str1)
# b'\xce\xd2\xcf\xb2\xbb\xb6\xc4\xe3\xb0\xa1\xa3\xa1'
- decode:encoding 指定的编码格式解码字符串。默认编码为字符串编码
str.decode(encoding='UTF-8',errors='strict')
# encoding -- 要使用的编码,如"UTF-8"
# errors -- 设置不同错误的处理方案
该方法返回解码后的字符串
u='我喜欢你啊!'
str1=u.encode('gb2312')
print(str1.decode('gb2312'))
# 我喜欢你啊!
编码(decode与encode)相关推荐
- python中的decode(编码)和encode(解码)
相信有好多人和我一样,学习了好久python,但是对decode和encode还是不太熟悉,今天就把这个内容整理下. decode encode str ---------> str(Unico ...
- 编码格式(UTF-8 与 ANSI)各种编码解码(encode、decode)
Windows:默认为 ANSI,记事本程序另存为处,可以设置其他编码格式: Ubuntu:默认为 UTF-8 1. ANSI ANSI 编码表示英文字符时用一个字节,表示中文用两个或四个字节 -- ...
- python - 文本处理 之 解码编码decode encode
目录 1.decode解码 2.encode编码 3.特殊符号 4.常用操作 (1)字符串编码常用类型 (2)gb2312转为utf-8 (3)转码异常 (4)u'string'指定unicode类型 ...
- python中decode和encode的区别
首先要搞清楚,字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码, 即先将其他编码的字符串解码(decode)成unicode,再从unic ...
- python decode unicode encode
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(en ...
- python爬取小说出现乱码_详解Python解决抓取内容乱码问题(decode和encode解码)
一.乱码问题描述 经常在爬虫或者一些操作的时候,经常会出现中文乱码等问题,如下 原因是源网页编码和爬取下来后的编码格式不一致 二.利用encode与decode解决乱码问题 字符串在Python内部的 ...
- pythonencode和decode_Python3的decode()与encode()
python3的decode()与encode() Tags: Python Python3 对于从python2.7过来的人,对python3的感受就是python3对文本以及二进制数据做了比较清晰 ...
- python中文decode和encode转码
字符串在Python内部的表示是unicode编码,因此,在做编码转换时,通常需要以unicode作为中间编码,即先将其他编码的字符串解码(decode)成unicode,再从unicode编码(en ...
- Python解决抓取内容乱码问题(decode和encode解码)
一.乱码问题描述 经常在爬虫或者一些操作的时候,经常会出现中文乱码等问题,如下 原因是源网页编码和爬取下来后的编码格式不一致 二.利用encode与decode解决乱码问题 字符串在Python内部的 ...
- decode和encode
首先要明确一点就是python中的字符串在内部都是以unicode存储的.decode的意思是把一个unicode字符串"解码"成期望的编码,decode完后,不仅编解码变了,而且 ...
最新文章
- 利用百度api判断已知经纬度的一个点是否在多边形内
- Git的思想和基本工作原理
- docker 容器重命名
- 计算机网络wfq,计算机网络基础试题-a卷-信科09.doc
- JDBC连接(MySql)数据库步骤,以及查询、插入、删除、更新等十一个处理数据库信息的功能。...
- 程序员面试金典 - 面试题 17.17. 多次搜索(Trie树)
- C/C++课程设计 新生入学管理系统(二)
- Consider defining a bean of type ‘com.xg.stupro.service.StudentService‘ in your configuration.
- Java动态代理与静态代理
- Ubuntu-显卡驱动-nvidia-smi报错:couldn‘t communicate with the NVIDIA driver
- 36. Element length 属性
- DPDK框架原理简介 (0002转)
- 几种代码管理工具比较
- RecyclerView、Adapter、ViewHolder的关系
- ZOJ3551 Bloodsucker(概率dp)
- [ERROR] InnoDB: Attempted to open a previously opened tablespace
- 科猫网:3个职场“寒心”故事(道出职场冷暖)
- Matlab——行星轨道问题
- 【Avro二】Avro RPC框架
- 【photoshop】笔记(四)之修补工具