zoukankan      html  css  js  c++  java
  • python的编码和解码

    编码介绍:

    1. ASCII: 英文, 特殊字符, 数字, 8bit, 1byte
    2. GBK: 中文 16bit, 2byte. 兼容ASCII
    3. unicode: 万国码, 32bit 4byte. 兼容ASCII
    4. UTF-8: 长度可变的unicode. 英文:8bit, 欧洲:16bit, 中文:24bit 3byte

    python2 只能用ASCII
    python3 有unicode, 默认的编码就是unicode
    内存里用的是unicode. 硬盘和网络传输用的是utf-8或者GBK








    python3的encode()和decode()
    在python3的内存中. 在程序运行阶段. 使⽤用的是unicode编码.
    因为unicode是万国码. 什么内容都可以进行显示. 那么在数据传输和存储的时候由于unicode比较浪费空间和资源.
    需要把unicode转存成UTF-8或者GBK进行存储. 怎么转换呢.
    在python中可以把⽂字信息进行编码. 编码之后的内容就可以进行传输了.
    编码之后的数据是bytes类型的数据.其实啊.还是原来的数据只是经过编码之后表现形式发生了改变而已.

    bytes 的表现形式
    1.英文 b'nihao'英文的表现形式和字符串没什么两样
    2.中文 b'xc4xe3xbaxc3'这是一个汉子‘你好’的utf-8的bytes表现形式

    字符串在传输时转化为bytes->encode(字符集)来实现。
    英⽂编码之后的结果和源字符串一致.
    中文编码之后的结果根据编码的不同. 编码结果 也不同.
    我们知道.一个中文的UTF-8编码是3个字节. 一个GBK的中文编码是2个字节.
    编码之后的类型就是bytes类型. 在网络传输和存储的时候我们python是保存和存储的bytes
    类型. 那么在对方接收的时候. 也是接收的bytes类型的数据.
    我们可以使⽤用decode()来进行解码操作. ->把bytes类型的数据还原回我们熟悉的字符串。

    # 例子:编码和解码的时候都需要制定编码格式.
    #
    # s = "我是文字"
    # bs = s.encode("GBK") # 我们这样可以获取到GBK的⽂字
    # print(bs) #编码的结果 GBK编码: b'xcexd2xcaxc7xcexc4xd7xd6'
    # 如何把GBK转换成UTF-8
    # 首先要把GBK转换成unicode. 也就是需要解码
    bs = b'xcexd2xcaxc7xcexc4xd7xd6'
    #先将GBK码编码成unicode码
    s = bs.decode("GBK")
    print(s) #我是文字
    # 然后需要进行重新编码成UTF-8
    bss = s.encode("UTF-8") # 重新编码
    print(bss) # UTF-8 b'xe6x88x91xe6x98xafxe6x96x87xe5xadx97'
  • 相关阅读:
    mysql8.0授权远程登录
    vbox 网络配置
    dnmp安装
    Unix/Linux环境C编程入门教程(7) OPENBSDCCPP开发环境搭建
    Unix/Linux环境C编程入门教程(6) 安装Fedora C/C++开发环境
    Unix/Linux环境C编程入门教程(5) Red Hat Enterprise Linux(RHEL)环境搭建
    Unix/Linux环境C编程入门教程(4) Debian Linux环境搭建
    C语言入门(8)——形参与实参
    C语言入门(7)——自定义函数
    C语言入门(6)——C语言常用数学函数
  • 原文地址:https://www.cnblogs.com/caodneg7/p/9284891.html
Copyright © 2011-2022 走看看