千家信息网

python3中unicode和bytes的示例分析

发表于:2026-11-01 作者:千家信息网编辑
千家信息网最后更新 2026年11月01日,这篇文章主要为大家展示了"python3中unicode和bytes的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"python3中unicode
千家信息网最后更新 2026年11月01日python3中unicode和bytes的示例分析

这篇文章主要为大家展示了"python3中unicode和bytes的示例分析",内容简而易懂,条理清晰,希望能够帮助大家解决疑惑,下面让小编带领大家一起研究并学习一下"python3中unicode和bytes的示例分析"这篇文章吧。

写了一些python3程序,四处能看到bytes类型,而它并不存在于python2中,这也是python3和python2显著区别之一。

以前在写python2代码的时候,经常会遇到很多编码报错的异常,原因在于python2对unicode的支持不是特别理想。而在python3中,所有编写的代码都是unicode,python解析器在运行的时候,内部都转换(除非你显示定义为bytes类型)为unicode,减少了出错的可能性。

在python3中,有两种字符串类型,默认的就是str,即unicode,也叫做文本类型。但一个程序总是会有I/O操作(磁盘,网络),即I/O二进制数据,在python3中定义为bytes类型。bytes类型就是一个个字节串,包含0~256 之间的一个整数。

那么如何定义bytes类型呢,有两种显示的方法,比如:

#只能允许ASCII值x=b'abc'y=b'\xe6\x88\x91'print (x,y)#对unicode字符集进行特定编码t=bytes("我们","UTF-8")#输出b'\xe6\x88\x91\xe4\xbb\xac'#一个中文字符,UTF-8编码占用三个字节print (t)#返回6,对于python来说,就是字节序列的长度print (len(t))#返回2,代表两个字符print (len("我们"))

接下去说说str类型和bytes类型之间的转换,比如从网络上读取到二进制数据后,python需要你显示的将其转换为str类型,也就是说 python不会隐式在str和bytes之间转换 ,看上去麻烦了很多,但会减少你出错的几率,自己明确自己做要的事情。

如果要将str转换为bytes,必须选择一个编码,明确二进制数据是如何编码的,比如:

x="我"y=x.encode("UTF-8")z=x.encode("GBK")#b'\xe6\x88\x91' b'\xce\xd2'print (y,z)

如果要将bytes转换为str,也需要一个编码,必须说明的是,你必须知道 二进制数据的编码是什么 ,如果选错了,转换为unicode的时候会错误,另外在python内部,它不关心二进制数据是什么编码的,只要是bytes类型, 它就是一串字节序列 ,比如:

x=b'\xe6\x88\x91'print (x.decode("UTF-8"))#会报错print (x.decode("GBK"))

总之一句话," python内部使用unicode,外部使用bytes类型 ",python内建库中,很多函数会说明需要str类型还是bytes类型(严格说来是bytes-like对象,比如bytes、bytearray ),在写代码的时候一定要看清楚,比如 hamc 库的new方法,就要求:

hmac.new(key, msg=None, digestmod=None) key is a bytes or bytearray object giving the secret key

很多库,尤其第三方库(比如requests)为了兼容python2和python3,会在内部做很多转换工作,让你意识不到bytes类型的存在,虽然生产力提高了,但对于理解python并没有太大的好处。

如果要充分理解bytes和str的应用,可以参考open和write两个内建函数。

使用文本方式打开文件,python在内部会自动转换为str类型,比如:

file ="t.txt"t = open(file,mode="r").read()

而如果是二进制方式打开,如果要显示在终端,需要转换为str类型,比如:

file ="t.txt"t = open(file,mode="rb").read()print (t.decode())print (t,type(t))

而如果是二进制方式写入,则将bytes类型数据直接写入,比如:

file="t.txt"t=open(file,mode="wb")t.write(b'\xe6\x88\x91')

在上面几个例子中,都没有说明使用那种编码,如果不显示指定,一般编码等同于locale.getpreferedencoding() 。

以上是"python3中unicode和bytes的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!

类型 编码 二进制 数据 字符 字节 就是 时候 UTF-8 示例 分析 之间 代码 内容 方式 篇文章 两个 函数 序列 文本 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 互联网科技公司的优势 互联网科技作文 深圳齐家互联网科技 一五八零互联网科技 互联网科技公司做什么 顶级互联网科技成果有哪些 湖南一路畅行互联网科技 晓花互联网科技有限公司网址 崇明区互联网教育科技售后服务 坤平互联网科技 畅思互联网科技 乌鲁木齐新华智原互联网科技学校 保险科技服务互联网营销体系 陕西云淼互联网科技公司 抖集互联网科技技术咨询 中国新注册互联网科技 万物互联网智能科技 北京瑞云互联网科技有限公司 互联网大会出现的黑科技 银川新华互联网科技学校招聘 西安纸贵互联网科技有限公司 科技互联网公司装修 卓越科技(互联网 ) 互联网 视角下的科技创新 互联网和高科技公司 互联网科技公司需要的职位 昭通云南众福互联网科技有限公司 南山科技园互联网公司有哪些 互联网科技创业计划的风险分析 互联网企业和网络科技有限公司
0