python的encode和decode

2023-01-31 05:01:57 python encode decode

python的encode和decode误读总结



    最近在学Python,对编码有个误解的地方

    下面是错误的理解:

    encode():编码,将对象的编码转换为指定编码格式,按照字面理解,一直以为是其他编码格式转换成unicode格式编码

    decode():解码,是编码的逆过程。解析破译,把Unicode格式转换成其他格式。


    查看一些资料和其他大神的博客,才有了正确认知和理解

    decode的作用是将其他编码的字符串转换成Unicode编码,如str1.decode('gb2312'),表示将gb2312编码的字符串str1转换成Unicode编码。

    encode的作用是将unicode编码转换成其他编码的字符串,如str2.encode('gb2312'),表示将Unicode编码的字符串str2转换成gb2312编码。


    python是个容易出现编码问题的语言。所以,我按照我的理解写下下面这些文字。 

    首先,要了解几个概念。

    *字节:计算机数据的表示。8位二进制。可以表示无符号整数:0-255。下文,用“字节流”表示“字节”组成的串。 

    *字符:英文字符“abc”,或者中文字符“你我他”。字符本身不知道如何在计算机中保存。下文中,会避免使用“字符串”这个词,而用“文本”来表 

示“字符”组成的串。 

    *编码(动词):按照某种规则(这个规则称为:编码(名词))将“文本”转换为“字节流”。(在python中:unicode变成str) 

    *解码(动词):将“字节流”按照某种规则转换成“文本”。(在python中:str变成unicode) 

    **实际上,任何东西在计算机中表示,都需要编码。例如,视频要编码然后保存在文件中,播放的时候需要解码才能观看。 

    unicode:unicode定义了,一个“字符”和一个“数字”的对应,但是并没有规定这个“数字”在计算机中怎么保存。(就像在C中,一个整数既 可以是int,也可以是short。unicode没有规定用int还是用short来表示一个“字符”) 

    utf8:unicode实现。它使用unicode定义的“字符”“数字”映射,进而规定了,如何在计算机中保存这个数字。其它的utf16等都是unicode实现。 



   总结:

   编码是把文本(字符串)转换成字节流,Unicode格式转换成其他编码格式

   解码是把字节流转换成字符串(文本),其他编码格式转成Unicode


相关文章