• Python学习:encode()和decode()方法:字符串编码转换


    Python中,有两种常用的字符串类型,分别为 str 和 bytes 类型,其中 str 用来表示 Unicode 字符,bytes 用来表示二进制数据。str 类型和 bytes 类型之间就需要使用 encode() 和 decode() 方法进行转换。

    encode()方法:为字符串类型(str)提供的方法,用于将 str 类型转换成 bytes 类型,这个过程也称为 ”编码“。

    encode()方法的语法格式如下:

    str.encode([encoding="utf-8"][,errors="strict"])
    
    • 1

    注意:格式中用 [] 括起来的参数为可选参数,也就是说,在使用此方法时,可以使用 [] 中的参数,也可以不使用。

    参数解释:

    • str:要进行转换的字符串。

    • encoding=“utf-8”:指定进行编码时采用的字符编码,该选项默认采用 utf-8 编码。例如。想要使用简体中文,可以设置gb2312。当方法中只适用这一个参数时,可以省略前边的 ”encoding=",直接写编码格式,例如:str.encode(“UTF-8”)。

    • errors=“strict”:指定错误处理方式,其可选择值可以是:
      strict:遇到非法字符就抛出异常。
      ignore:忽略非法字符。
      replace:用“?”替换非法字符。
      xmlcharrefreplace:使用 xml 的字符引用。

    该参数的默认值为 strict。

    注意:使用 encode() 方法对原字符进行编码,不会直接修改原字符串,如果想修改原字符串,需要重新复制。

    示例一:

    # 将str类型字符串 “百度官网” 转成 bytes 类型
    str = "百度官网"
    print(str.encode())
    
    • 1
    • 2
    • 3

    结果:

    b'\xe7\x99\xbe\xe5\xba\xa6\xe5\xae\x98\xe7\xbd\x91'
    
    • 1

    此方式默认采用UTF-8编码,也可以手动指定其他编码格式,例如:

    str = "百度官网"
    print(str.encode('GBK'))
    
    • 1
    • 2

    结果:

    b'\xb0\xd9\xb6\xc8\xb9\xd9\xcd\xf8'
    
    • 1

    decode()方法:将 bytest 类型的二进制数据转换为 str 类型,这个过程称为“解码”。

    语法格式:

    bytes.decode([encoding="utf-8"][,errors="strict"])
    
    • 1

    参数解释:

    • bytes:要进行转换的二进制数据。

    • encoding=“utf-8”:指定解码时采用的字符编码,默认采用 utf-8 格式。当方法中只使用这一个参数时,可以省略“encoding=”,直接写编码方式即可。注意:对bytes类型数据解码,要选择和当初编码时一样的格式。

    • errors=“strict”:指定错误处理方式,其可选择值可以是:
      strict:遇到非法字符就抛出异常。
      ignore:忽略非法字符。
      replace:用“?”替换非法字符。
      xmlcharrefreplace:使用 xml 的字符引用。

    该参数的默认值为 strict。

    示例二:

    '''
    学习中遇到问题没人解答?小编创建了一个Python学习交流群:711312441
    寻找有志同道合的小伙伴,互帮互助,群里还有不错的视频学习教程和PDF电子书!
    '''
    str = "百度官网"
    bytes = str.encode()
    print(bytes.decode())
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7

    输出:

    百度官网
    
    • 1

    如果解码时采用和编码时不一样的格式,则会抛出异常,例如:

    str = "百度官网"
    bytes = str.encode('GBK')
    print(bytes.decode())
    
    • 1
    • 2
    • 3

    结果:

    Traceback (most recent call last):
      File "D:\pythonProject\one day\test.py", line 678, in <module>
        print(bytes.decode())
    UnicodeDecodeError: 'utf-8' codec can't decode byte 0xb0 in position 0: invalid start byte
    
    • 1
    • 2
    • 3
    • 4
  • 相关阅读:
    PyTorch Geometric Temporal 介绍 —— 数据结构和RGCN的概念
    npm install卡在sill idealTree buildDeps没有反应,安装失灵
    javascript高级(3)
    cocos 构建发布没有对话框
    客服都喜欢的快捷回复软件
    Ubuntu安装freeSwitch
    【线性代数】第四章-n维向量:向量、向量组、线性表出、极大无关组与向量组的秩等
    Android之UI Automator框架源码分析(第九篇:UiDevice获取UiAutomation对象的过程分析)
    VAE, the principle and the code
    NeuralRecon拜读:单目视频实时连贯三维重建
  • 原文地址:https://blog.csdn.net/qdPython/article/details/126892186