zoukankan      html  css  js  c++  java
  • python3 编码

    编码方式


    将明文编码成密文需要按照一定的编码方式,编码方式多种多样,分别对应于不同的字符集。

    ASCII

    上个世纪60年代,美国制定了一套字符编码,对英语字符与二进制位之间的关系,做了统一规定。这被称为ASCII码,一直沿用至今。 
    ASCII码一共规定了128个字符的编码,比如空格”SPACE”是32(二进制00100000),大写的字母A是65(二进制01000001)。这128个符号(包括32个不能打印出来的控制符号),只占用了一个字节的后面7位,最前面的1位统一规定为0。

    其他编码

    对于英语来说128个字符就已经够用了,但是对于其他语言来说却不够。因此针对不同的语言先后出现了多种编码方式,例如针对中文的GB2312和GBK编码,针对中文繁体的Big5编码等等,这些编码方式都使用多个字节表示一个字符。

    Unicode

    随着越来越多的编码方式的出现,急需一种能够包含全世界所有符号的编码系统来消灭乱码,这种编码系统就叫做Unicode。Unicode只是一套编码系统,包含所有字符集,却并不规定编码后的二进制代码如何存储。

    UTF-32使用4个字节存储每一个字符,但是对于英文字符来说,使用ASCII编码只需1个字节即可存储,这极大的浪费了存储空间。 
    因此出现了一种变长的编码方式UTF-8,UTF-8是使用得最广泛的Unicode编码实现方式,使用1-4个字节表示一个字符,根据不同的字符变化长度。比如对于英文字符,1个字节就够了,但是对于中文,可能需要2-4个字节才能存储。

    Base64

    Base64是网络上最常见的用于传输8Bit字节代码的编码方式,可用于在HTTP环境下传递较长的标识信息。采用Base64编码具有不可读性,可用作简单的加密方式。

    Python 3编码


    以前用Python 2,每次使用中文就会碰到各种编码问题,但是Python 3使得字符串编码变得非常简单。

    我们可以通过以下代码查看Python 3的字符串默认编码:

    import sys
    sys.getdefaultencoding()
    

    Python 3的默认编码方式是UTF-8。

    使用Python解释器进行如下编码解码操作,在bytes和str之间转换:

    >>> '中'.encode()
    b'xe4xb8xad'
    >>> b'xe4xb8xad'.decode('utf-8')
    '中'
    

    我们在使用Python以二进制的形式写入文件时,需要先将字符串编码成字节串,然后再写入文件。以二进制的形式读取文件时也是如此,需要将读取的字节串解码成字符串。

  • 相关阅读:
    这次面试就差不多了,你有什么问题需要问我呢?
    C++为啥要使用new
    C#读取“我的文档”等特殊系统路径及环境变量
    C++11 Lambda表达汇总总结
    c#计算 坐标点与坐标点之间的距离
    eclipse svn同步资源库时忽略某些不需要提交文件类型和文件夹
    通俗理解TCP/IP协议三次握手四次分手流程
    mysql 免安装版 启动服务马上关闭
    MySQL数据库安装与配置详解
    word 插入的图片被嵌套在文字底下
  • 原文地址:https://www.cnblogs.com/xp1005/p/6385647.html
Copyright © 2011-2022 走看看