Python encode()函数详解,Python编码解码

这篇具有很好参考价值的文章主要介绍了Python encode()函数详解,Python编码解码。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

「作者主页」:士别三日wyx
「作者简介」:CSDN top100、阿里云博客专家、华为云享专家、网络安全领域优质创作者
「推荐专栏」:小白零基础《Python入门到精通》

encode() 可以对字符串进行「编码」,常用来对「中文」字符串进行编码,以解决「乱码」问题。

语法

string.encode( encoding, errors )

参数

  • encodeing :(可选)指定编码,默认 UTF-8
  • errors :(可选)设置错误处理方式,默认

返回值

  • 返回编码后的「新字符串」

实例:对字符串进行GBK编码

str1 = 'hello'
print(str1.encode('gbk'))

输出:

b'hello'

1、常见编码格式

  • ASCLL:美国早期制定的编码规范,只能表示128个字符。
  • GB2312:中国在ASCLL基础上对中文进行扩展,可以表示6763个汉字符号。
  • GBK:对GB2312的进一步扩展(K指扩),收录了21886个汉字符号。
  • GB18030:对GBK再一次扩充,收录了70244个汉字符号。
  • Unicode:字符集,包含了世界上目前所有的符号,全球的所有文字都可以解析,字符是定长的,统一为16位
  • UTF-8:使用最广的一种Unicode的实现方式,每次8个位传输数据;体积太大,国内通常使用GBK。
  • UTF-16:Unicode的另一种实现方式,每次传输16位数据

各个编码实例:

print('hello'.encode('gb2312'))
print('hello'.encode('gbk'))
print('hello'.encode('gb18030'))
print('hello'.encode('utf8'))
print('hello'.encode('utf16'))

输出:

b'hello'
b'hello'
b'hello'
b'hello'
b'\xff\xfeh\x00e\x00l\x00l\x00o\x00'

仔细观察返回结果就会发现,字符串前面都加了个b,接下来我们了解一下这是什么含义。

2、返回的是Bytes类型

encode() 编码后会返回一个「Bytes类型」的结果,而不是「str类型」

str1 = 'hello'
print(type(str1))
print(type(str1.encode()))

输出:

<class 'str'>
<class 'bytes'>

bytes 和 str 都属于字符串类型:

  • str 以Unicode code points形式存储(人认识的形式)
  • bytes 以byte形式存储(机器认识的形式)

bytes 是一个「二进制」序列对象,定义时在字符串前面加上b(英文可以,中文需要先encode)

str1 = b'hello'
print(type(str1))

输出:

<class 'bytes'>

3、错误处理方式

encode() 在编码时,经常会遇到「无法编码」的字符,这时就可以用 errors 设置适当的处理方式:

  • strict:失败时引发错误
  • ignore:忽略无法编码的字符
  • backslashreplace:用反斜杠替换无法编码的字符
  • namereplace:用解释字符的文本替换无法编码的字符
  • replace:用问号替换无法编码的字符
  • xmlcharrefreplace:用xml字符替换字符

如果给「两个参数」,可以自动按顺序复制给参数;如果只给「一个参数」,需要用参数名指定。

print('hello'.encode('gbk', 'strict'))
print('hello'.encode(errors='ignore'))
print('hello'.encode(errors='backslashreplace'))
print('hello'.encode(errors='namereplace'))
print('hello'.encode(errors='replace'))
print('hello'.encode(errors='xmlcharrefreplace'))

4、解码

decode() 会将「bytes类型」转成「str类型」,这意味着它只能解码bytes类型的字符串,解码str类型的字符串会报错 AttributeError: ‘str’ object has no attribute ‘decode’

Python encode()函数详解,Python编码解码,Python,python,网络安全,人工智能

bytes类型格式是 b'xxx',如果只有str形式的字符串(比如 '\xe5\xbc\xa0\xe4\xb8\x89'),可以在前面加上b,变成bytes类型,再进行解码

print(b'\xe5\xbc\xa0\xe4\xb8\x89'.decode())

输出:文章来源地址https://www.toymoban.com/news/detail-543187.html

张三

到了这里,关于Python encode()函数详解,Python编码解码的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • Python字符串的编码和解码

    不同计算机之间进行数据传输,实际上传输的是二进制数据。 将str类型转换成bytes类型,需要用到字符串的encode()方法 Str.encode(encoding=’utf-8’,                Errors=’strict/ignore/replace’) 将bytes类型转换成str类型,需要用到bytes类型的decode()方法 Bytes.decode(encodin

    2024年01月22日
    浏览(47)
  • python解码bash64报错:binascii.Error: Invalid base64-encoded string: number of data characters (7121) can

    base64Test.py 报错: 这个错误提示说明你的Base64字符串长度不是4的倍数,因此无法正确解码。这是因为Base64编码是将3个字节的二进制数据转换为4个字符,如果原始数据长度不是3的倍数,编码器会进行一些填充操作,以便使编码后的字符串长度是4的倍数。 在Python中,使用标准

    2024年02月02日
    浏览(50)
  • 解决python编码报错:UnicodeEncodeError: ‘ascii‘ codec can‘t encode character u‘\uff08‘ in position 13:ordin

    解决 python 编码报错: UnicodeEncodeError: \\\'ascii\\\' codec can\\\'t encode character u\\\'uff08\\\' in position 13: ordinal not    最近在手搓数据分析小项目时,需要借助于爬虫获取些数据,于是翻出去年暑假写的python爬虫代码,往常可以正常运行的代码,却总是报 UnicodeEncodeError: \\\'ascii\\\' codec can\\\'t encode

    2024年01月18日
    浏览(54)
  • Solidity中哈希函数的编码与解码

    起因 写这篇文章的起因,是我在前端调试合约的时候,发现合约报错了,点开命令行报错,发现返回的是合约的 callData ,我直接表演一个眼前一黑,我怎么直接的知道是调用哪个方法的时候报错呢? 于是有了这篇文章的探索 目标: 如何根据 callData 解析出调用函数 内容:从

    2024年02月06日
    浏览(35)
  • Transformer | DETR目标检测中的位置编码position_encoding代码详解

    本文主要描述的是DETR论文中的position_encoding,详细DETR论文解析可参考  论文篇 | 2020-Facebook-DETR :利用Transformers端到端的目标检测=>翻译及理解(持续更新中)_夏天|여름이다的博客-CSDN博客_dert目标检测 Transformer不像RNN可以根据位置顺序接受和处理单词,所以为了得到词的

    2023年04月08日
    浏览(45)
  • FFMpeg 实现视频解码、编码、转码流程详解

    打开FFmpeg源码,会发现有一系列libavxxx的模块,这些模块很好地划分了代码的结构和分工。 libavformat,format,格式封装 libavcodec,codec,编码、解码 libavutil,util,通用音视频工具,像素、IO、时间等工具 libavfilter,filter,过滤器,可以用作音视频特效处理 libavdevice,device,设备

    2024年02月11日
    浏览(37)
  • SSR-Encoder:用于主题驱动生成的通用编码器详解_AIGC-图片生成视频系列

    本文介绍了SSR-Encoder,一种用于主题驱动生成的通用编码器,能够根据文本提示或掩码查询生成图像,无需额外的测试时间微调。文章详细解释了SSR-Encoder的贡献概述、方法详解以及综合结果,展示了其在图像生成和视频生成方面的有效性。

    2024年02月02日
    浏览(117)
  • 哈夫曼树,哈夫曼编码及解码详解

    🌍新人小白的博客 ⌛️希望大家多多关注 🌱一起加油,共同成长 🎃以后会经常更新哒~🙈 ⭐️个人主页: 收藏加关注,永远不迷路~⭐️ 一: 顺序表的操作,你真的学会了吗? 二: 顺序栈的基本操作 三: 循环队列的基本操作,你学会了吗? 四: 单链表的操作(超详细

    2024年02月05日
    浏览(45)
  • 【Python编程错误:‘utf-8‘编解码器无法解码字节0xd5】--解决方法详解

    【Python编程错误:\\\'utf-8’编解码器无法解码字节0xd5】–解决方法详解 Python是一门非常流行的高级编程语言,用户可以很方便地使用它来实现各种功能。然而,在使用Python编写代码时,有时会遇到各种错误。本文将详细介绍一种常见的Python编程错误——\\\'utf-8’编解码器无法解

    2024年02月08日
    浏览(36)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包