编码(decode与encode) 您所在的位置:网站首页 uncoder 编码(decode与encode)

编码(decode与encode)

2024-02-13 10:27| 来源: 网络整理| 查看: 265

目录 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. 编码方式属性 GB2312UTF-8UnicodeGB2312编码专门用来解决中文编码的,是双字节的,并且不论中英文都是双字节的;包含全部中文字符;总的来说GB2312编码方式的编码是以中国国情而创造的,在国际上的兼容性不好。UTF-8 编码是Unicode的一种实现方式,因为对于大多数语言,只需要一个字节就能够编码,如果都采用Unicode会极大浪费,于是出现了可变长编码UTF-8。它对英文使用8位(即一个字节),中文使用24位(三个字节)来编码。另外,如果是外国人访问你的GB2312网页,需要下载中文语言包支持。访问UTF-8编码的网页则不出现这问题。可以直接访问。这也是为什么大多数的网页是使用UTF-8编码而不是GB2312。目前几乎收纳了全世界大部分的字符。所有的字符都有唯一的编号,这就解决了解码的冲突!但是,unicode把大家都归纳进来,却没有为编码的二进制传输和二进制解码做出规定。 3. decode与encode decodeencodedecode的作用是将其他编码的字符串转换成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')) # 我喜欢你啊!


【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有