python3字符串编码总结-str(unicode)_bytes

Python 中的 UnicodeDecodeError 错误详细讨论 在Python中,UnicodeDecodeError是一个常见的编码错误,它表示在将字节数据解码为Unicode字符串时发生了错误。下面我们来分别看一下。 阅读详情

概述:python3中默认对字符串采用的是unicode编码的str类型来表示,任一字符用两字节表示。而bytes类型,其本质是比特流,即"10110011 00110011 xxxxxxxx",bytes表示的比特流是什么含义由不同的编码格式确定,比如如果是ascii编码,那么每8位表示一个字符。python3在进行文件操作和网络通信都是使用bytes进行的,所以对于str类型要进行编码后才能写入文件或网络。
(想进一步详细了解的各位可以继续阅读下面内容)。

1. 字符串的编码形式

字符串的编码最一开始是ascii,使用8位二进制表示,因为英文就是编码的全部。后来其他国家的语言加入进来,ascii就不够用了,所以一种万国码就出现了,它的名字就叫unicode,unicode编码对所有语言使用两个字节,部分汉语使用三个字节。但是这就导致一个问题,就是unicode不仅不兼容ascii编码,而且会造成空间的浪费,于是uft-8编码应运而生了,utf-8编码对英文使用一个字节的编码,由于这样的特点,很快得到全面的使用。

2. 字节码bytes

python3中bytes用b’xxx’表示,其中的x可以用字符,也可以用ascii表示。python3中的二进制文件(如文本文件)统一采用字节码读写。

2.1. 字节码的使用举例

这里写图片描述

2.2. 字节码的修改

要修改bytes中的某一个字节必须要将其转换为bytearray以后才可以。如下:

这里写图片描述

2.3. 字节码bytes与字符之间的关系

将表示二进制的bytes进行适当编码就可以变为字符了,比如utf-8或是gbk等等编码格式都可以。(所以我个人的理解就是:有utf-8格式的bytes,也有gbk格式的bytes等等)。

2.4. 字节码bytes与unicode编码的相互转换
这一部分非常重要,所以放在后面具体讲。

3. python3的编码

3.1 python2与python3字符串编码的区别

python3默认使用的是str类型对字符串编码,默认使用bytes操作二进制数据流,两者不能混淆!!
Python3有两种表示字符序列的类型:bytes和str。前者的实例包含原始的8位值,后者的实例包含Unicode字符。Python2也有两种表示字符序列的类型,分别叫做str和Unicode,与Python3不同的是,str实例包含原始的8位值;而unicode的实例,则包含Unicode字符。

3.2 bytes与str类型的相互转换

str(unicode)类型是基准!要将str类型转化为bytes类型,使用encode()内置函数;反过来,使用decode()函数。使用实例如下:

>>>oath = ‘我爱妞’
>>>type(oath)
<class 'str'>
>>>oath = oath.encode(‘utf-8’)
>>> type(oath)
<class 'bytes'>
>>> oath
b'\xe6\x88\x91\xe7\x88\xb1\xe5\xa6\x9e'
>>> oath = oath.decode()
>>> oath
'我爱妞'

为了方便开发者的使用,可以编写两个helper函数,第一个是无论输入的是str还是bytes类型都输出str。

def to_str(bytes_or_str):
  if isinstance(bytes_or_str, bytes):
    value = bytes_or_str.decode('utf-8')
  else:
    value = bytes_or_str
  return value # Instance of str

另外,还需要编写接受str或bytes,并总是返回bytes的方法:

def to_bytes(bytes_or_str):
  if isinstance(bytes_or_str, str):
    value = bytes_or_str.encode('utf-8)
  else:
    value = bytes_or_str
  return value # Instance of bytes

3.3 文件的编码

with open(‘sun.bin’,’wb’) as f:
	f.write(b‘sui’)

在open文件的时候用“wb”方式打开,即二进制写的方式,所以下面的write函数对象用的是bytes类型的b’sui’,这个时候如果使用f.write(‘sui’)就会出错的。
(注:对打开文件的路径的操作,使用os模块的getcwd方法以及chdir方法)

3.4 网页的编码

>>>import urllib.request
>>>response = urllib.request.urlopen(‘http://www.baidu.com’)
>>>html = response.read()
>>>type(html)
<class 'bytes'>

所以要正常显示的话,就要使用decode()方法了。

解决Python中pickle.load出现的UnicodeDecodeError错误 在使用Python中的pickle模块时,我们有时会遇到UnicodeDecodeError错误,这种错误通常是由于pickle文件中包含了无法被编码为ASCII字符集的内容导致的。总之,在使用pickle模块时,确保正确指定编码方式非常重要,这样才能够处理包含非ASCII字符的pickle文件。在这里,我们将编码方式设置为UTF-8,这样就能够成功解码pickle文件中的二进制数据了。这个错误说明了pickle模块无法将pickle文件中的二进制数据解码为ASCII字符集。 阅读详情

相关推荐

Unicode编码问题解决方案 Python

下面是一个例子,假设我们有一个文件名为“test.txt”,其中包含了一些文本信息,但是该文件的编码方式为GBK,而我们使用默认的utf-8编码方式读取时,就会出现UnicodeDecodeError错误。以上代码中,我们首先以二进制模式打开文件并读取为字节流,然后使用decode方法将其转换为正确的编码方式得到字符串信息,并输出。在以上代码中,我们通过添加“encoding=‘gbk’”参数来指定了正确的编码方式,这样就可以正确的读取文件内容并输出。Unicode编码问题解决方案 Python。

. 1952

【Python】 深入理解Python中的UnicodeDecodeError及其解决方案

理解编码和解码的原理,以及在代码中正确处理这些错误,对于编写健壮的Python程序至关重要。在Python编程中,我们经常需要处理各种类型的数据,尤其是文本数据。文本数据在计算机中通常以字节的形式存在,而字节需要被解码成我们能够理解的字符。编码是将字符转换为字节的过程,而解码则是相反的过程,即将字节转换回字符。在Python中,默认的编码方式是UTF-8,这是一种可以表示世界上几乎所有字符的编码方式。在这个例子中,我们尝试使用UTF-16编码来解码二进制数据,如果数据不是以UTF-16编码,将会遇到错误。

PythonWeb实践 2178

18.Python中的unicode, str,bytes

《Python编程的术与道:Python语言进阶》视频课程 《Python编程的术与道:Python语言进阶》视频课程链接:https://edu.youkuaiyun.com/course/detail/28618 unicode, str,bytes Unicode 当今的程序需要能够处理多种字符。应用程序经常被国际化,以各种用户可选语言显示消息和输出。同一程序可能需要输出英语、中文、法语、日语、希伯来语或俄语的错误消息。 Web内容可以用这些语言中的任何一种编写,也可以包含各种表情符号(emoji symbols

bai666ai的博客 721

Python UnicodeDecodeError

写工具时遇到如下报错:明显是编码问题,python文件的开头加入了编码声明 但是通过 打印信息显示编码并未改变。在代码的最后一个 import 导入 Module 后 , 添加如下代码 : 特别注意 , 上述代码要添加在 导入模块 的最后一行后面 , 不要放在 import 等导入模块代码的前面 , 否则会报错 !参考资料:https://blog.youkuaiyun.com/shulianghan/article/details/120650344更新分割线----------------------

auccy的博客 2522

解决Python3中的中文字符编码的问题

python3中str默认为Unicode的编码格式 Unicode是一32位编码格式,不适合用来传输和存储,所以必须转换成utf-8,gbk等等 所以在Python3中必须将str类型转换成bytes类型的 在Python中使用encode的方式可以进行字符的编码 实际用法: >>>a = 中国 >>> a.encode(utf-8) b&#39;\xe4\xb8\xad\xe5\x9b\xbd&#39; >>> a.encode(gbk) b&#39;\xd6\xd0\xb9\xfa&#39;   总结: Python中str类型转bytes类型,相当与Unicode转gbk,utf-8。。。类型

【网络安全】Centos7安装杀毒软件----ClamAV

Clam AntiVirus是一个Linux系统上使用的反病毒软件包。主要应用于邮件服务器,采用多线程后台操作,可以自动升级病毒库。

你在看屏幕的同时,屏幕也在注视着你 8828

Python 3 字符串中的 STR 和 Bytes 究竟有什么区别?_python str binary 区别(1)

现在能在网上找到很多很多的学习资源,有免费的也有收费的,当我拿到1套比较全的学习资源之前,我并没着急去看第1节,我而是去审视这套资源是否值得学习,有时候也会去问一些学长的意见,如果可以之后,我会对这套学习资源做1个学习计划,我的学习计划主要包括规划图和学习进度表。不知道你有没有注意到上图中str矩形要比Bytes矩形短,表示同样的内容,str的长度要小于或等于Bytes的长度,你可以考虑一下原因(参考Unicode、UTF-8的编码规则)。分享给大家这份我薅到的免费视频资料,质量还不错,大家可以跟着学习。

2401_84140023的博客 806

educoder数字逻辑实训:寄存器设计与应用(Logisim)

第1关:基本寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位基本寄存器,要求上升沿触发,具有异步复位功能。 第2关:移位寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位右移移位寄存器,要求上升沿触发,具有异步复位功能。 第3关:循环移位寄存器的设计 任务描述 本关任务:在Logisim中,构建由4个D触发器构成的4位循环右移移位寄存器,要求上升沿触发,具有异步复位功能以及并行数据同步加载功能。 第4关:并行..

qq_52209002的博客 1万+

Python2和Python3中字符串编码问题详解

本文参考: https://www.cnblogs.com/saolv/p/8158159.html https://blog.youkuaiyun.com/mycar001/article/details/78364357 https://blog.youkuaiyun.com/Deft_MKJing/article/details/79460485?tdsourcetag=s_pcqq_aiomsg 首先说明...

雨羊的博客 2099

Zemax物理光学实战:3分钟搞定高斯光束传播模拟(附菲涅尔局部分析技巧)

本文详细介绍了在Zemax中进行高斯光束传播模拟与菲涅尔局部分析的实战技巧。通过3分钟快速设置指南和参数解析,帮助光学工程师准确模拟激光光束特性,避免常见误区。特别分享了菲涅尔局部分析的关键技巧和传播参数优化策略,提升光学系统设计的精度与效率。

lambda的博客 804

Vivado2022.2下载安装

链接:https://pan.baidu.com/s/1lyfE2d-VmaWC-_aR8ratCQ提取码:mt09。

weixin_61081689的博客 2万+

python2中的unicode_python2 中 unicode 和 str 之间的转换及与python3 str 的区别

在python2中字符串分为 unicode 和 str 类型Str To Unicode 使用decode(), 解码Unicode To Str 使用encode(), 编码返回数据给前端时需要先将unicode转换为str类型, 事实上, python2 中的 str 就是一串字节(byte), 而网络通信时, 传输的就是字节. 如果前端需要接收json数据, 需要使用 json.dumps...

weixin_39681161的博客 332

基于POD和神经网络的多工况温度场重构反演系统

本文提出了一种基于本征正交分解(POD)和神经网络的多工况温度场重构反演系统。该系统通过POD方法从多工况温度场数据中提取主要特征模态,构建神经网络模型建立工况参数与POD模态系数的映射关系,实现温度场的快速重构。系统采用Python实现,包含数据预处理、POD分解、神经网络训练和温度场重构等模块。实验结果表明,该方法能够有效降低计算复杂度,实现高精度的温度场预测。

huanghm88的专栏 274

Python 3 字符串中的 STR 和 Bytes 究竟有什么区别?

Python2的字符串有两种:str和Unicode,Python3的字符串也有两种:str和Bytes。Python2的str相当于Python3的Bytes,而Unicode相当于Python3的Bytes。 Python2里面的str和Unicode是可以混用的,在都是英文字母的时候str和unicode没有区别。 而Python3严格区分文本(str)和二进制数据(Bytes),文本总...

python学习者的博客 583

自然语言处理NLP星空智能对话机器人系列:Gavin大咖 Transformer 101问答集 第一问

自然语言处理NLP星空智能对话机器人系列:Transformer 101问答 [让天下没有难学的Transformer] 你问我答系列之一 Gavin大咖第一问: Transformer中的可训练Queries、Keys和Values矩阵从哪儿来? 以上是智华解答,供同学们参考。 星空智能对话机器人系列博客 NLP星空智能对话机器人系列:第二次星空智能对话机器人Zoom线上演示安排 NLP星空智能对话机器人系列:StarSpace: Embed All The Things NLP星空智能对

大模型与Agent智能体 991

PostgreSQL 实战:行级安全策略(RLS)详解

PostgreSQL的行级安全(RLS)机制实现了细粒度的数据访问控制,通过动态过滤行数据满足多租户隔离、隐私保护等需求。本文系统介绍了RLS的核心原理、配置方法及实践建议:1) 启用RLS后需定义策略,通过USING和WITH CHECK条件控制访问;2) 适用于SaaS、医疗金融等场景,但需注意COPY命令、外键等特殊情况;3) 建议配合会话变量、索引优化和文档化策略使用。文章还提供了多租户隔离等实战案例,并分析了RLS对查询性能的影响及优化方案。RLS将安全控制下沉至数据库层,显著提升应用安全性和可维

数据知道的博客 3149

python2和python3字符串区别_Python2与python3中字符串的区别

Python2在python中包含两种字符串类型:str和unicode,str并不是完全意义上的字符串,其实是由unicode经过编码(encode)后的字节组成的字节字符串,而unicode则是真正意义上的字符串,由字符组成。python 在内部使用两个字节来存储一个unicode,使用unicode对象而不是str的好处,就是unicode方便于跨平台。两种方式定义一个unicode:u1 ...

weixin_39706861的博客 236

RK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGB

RK3588, FFmpeg 拉流 RTSP, mpp 硬解码转RGB

J。 2339

python bytes转str_Python 简明教程 --- 9,Python 编码

微信公众号:码农充电站pro 个人主页:https://codeshellme.github.io当你选择了一种语言,意味着你还选择了一组技术、一个社区。 —— Joshua Bloch目录1,什么是计算机编码编码信息从一种形式转换到另一种形式的过程,就叫做编码。说白了,编码就是信息的一种转换过程。比如,信息的加密解密,这就是信息的一种转换过程,它是信息的明文与密文之间的转换过程。还有不同国家文字...

weixin_39923110的博客 299

TMS_WebGMaps_1.9.8.0_Full_Source

TMS_WebGMaps_1.9.8.0_Full_Source 全源码 delphi cbuilder

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

python2 中 unicode 和 str 之间的转换及与python3 str 的区别

这篇文章主要介绍了python2 中 unicode 和 str 之间的转换及与python3 str 的区别 本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下 在python2中字符串分为 unicode 和 str 类型 Str To Unicode 使用decode(), 解码 Unicode To Str 使用encode(), 编码 返回数据给前端时需要先将uni...

python3基础教程 2481

Statistics and Machine Learning Toolbox

Statistics and Machine Learning Toolbox(带书签),MATLAB统计学习工具

Python2与Python3的字符串区别

Python中的字符串类型和编码: 在Python3中: 1. bytes 类型 : 表示所有 非Uncode编码的数据(gbk、utf8、jpg、mp3、avi) 2. str 类型 : 表示 Unicode 字符串 注意:在Python3 代码里手动创建的字符串,默认都是 Unicode编码 (即 str 类型) ...

砍柴樵夫 431

python3 编码解码_python3编码与解码

1、字节流与字符串的转换内置函数bytes()与str()bytes()函数可以将字符串按照某一编码规范转换为字节流。其中第一个参数为字符串,第二个参数为编码规范(必填)。如果第一个参数是仅由ascii码字符(ascii码字符是unicode码字符的子集)组成的,则字节流直接以ascii码字符显示。如果不是的话,则在按照不同的编码规范显示。在utf-8编码下,一个汉子占三个字节(一个字节是8位二进...

weixin_39692830的博客 519

python中 str 和 repr_python的str

《编写高质量Python代码的59个有效方法》——第3条:了解bytes、str与unicode的区别本节书摘来自华章社区《编写高质量Python代码的59个有效方法》一书中的第3条:了解bytes、str与unicode的区别,作者[美]布雷特·斯拉特金(Brett Slatkin),更多章节内容可以访问云栖社区“华章社区”公众号查看第3条:了解bytes、str与unicode的区别Pyth....

weixin_39964391的博客 310

python2与python3编码_python2和python3的编码问题

python2中有两种类型str字符串和unicode字符串python3则改成了bytes和str字符串在python2中‘xxx’和b‘xxx’都是str字符串,u‘xxx’是unicode字符串,即python3中的bytes在python2是不存在的,都归属于str字符串在python3中unicode是不存在的,被归并到str字符串里面的,即‘xxx’和u‘xxx’都是str字符串,b‘...

weixin_32836221的博客 360

python3用的什么编码_python3中使用什么编码

python3中默认编码方式为utf-8。在存储和显示上,python3使用文本字符和二进制数据进行区分,更加明确和清晰。默认情况下,Python 3 源码文件以 UTF-8 编码,所有字符串都是 unicode 字符串。(推荐学习:Python视频教程)当然你也可以为源码文件指定不同的编码:# -*- coding: cp-1252 -*-文本字符使用str类型表示,str 能表示 Unicod...

weixin_39658318的博客 118

python如何读取中文文件-Python3 中文文件读写方法

字符串在Python内部的表示是Unicode编码,因此,在做编码转换时,通常需要以Unicode作为中间编码,即先将其他编码的字符串解码(decode)成Unicode,再从Unicode编码(encode)成另一种编码。在新版本的python3中,取消了unicode类型,代替它的是使用unicode字符的字符串类型(str),字符串类型(str)成为基础类型如下所示,而编码后的变为了字节类型...

weixin_37988176的博客 2948
上一篇: Git命令行使用教程02
下一篇: python08-面向对象编程基础
隋边边
博客等级 码龄11年 304粉丝 91原创
评论 4
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值