python3字符串编码和解码

本文介绍了Python3中字符串的编码和解码过程,包括文件保存时的编码选择与可能出现的乱码问题。在Python3中,字符串分为和类型,编码(encode)是将字符串转化为二进制,解码(decode)则是将二进制还原为字符串。通过实例展示了如何指定解码方式读取文档,解释了不同编码方式下二进制串的区别。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

虽然这是一个很基础的问题,但是博主一直都是瞎猫碰死耗子的心态去试,因为对于中文就那么几种encode方式 - -!


编码解码
  • 什么是encodedecode

一般来说由一种字符串变成二进制串的过程叫encode;反之称为decode

  • 从保存文档开始讲起

通常我们写一个文档时,无论是通过word / pycharm / notepad++这些,都会有一个东西叫解码方式,出现在右下角,并且选不好就出现乱码。

why?
首先,我们知道字符串存在硬盘中,实际上存放的是二进制数,那怎么存放二进制数,二进制怎么对应起我们想要的字符,这就通过了我们规定的编码规则了。

我们通过输入法,输入的字符串到硬盘二进制的过程叫encode;打开二进制文件在编辑器中显示字符的过程叫decode

这是对于文件编辑器来说。

python3字符

python3文件中只有两种字符str型和bytes
其中bytes就是二进制串的十六进制表示,str在python3是Unicode标准并且可以选择不同编码表示,如utf- GBK ISO-等。
可以在python代码的首行指定# -*- coding:gbk -*-,或者在pycharm的右下角选择
关于Unicode这些,可以看:https://blog.youkuaiyun.com/qq_24326765/article/details/82183167

其实你把python文件当成一个普通的字符文件就很容易理解上面的东西了。
只不过python因为可以调用函数实现encode和decode的操作。

看看python3如何指定解码方式读取文档
特地用GBK写了一个test文件,只有一行:

i love 中国!

代码:

# -*- coding:gbk -*-

a = 'i love 中国!'
print(a.encode('gbk'))
print(a.encode('utf-8'))
with open('test_en_decode','rb') as f:
    a = f.readlines()
    print(a)
    print(a[0].decode('gbk'))

结果:

b'i love \xd6\xd0\xb9\xfa!'
b'i love \xe4\xb8\xad\xe5\x9b\xbd!'
[b'i love \xd6\xd0\xb9\xfa!']
i love 中国!

发现GBK utf-两者编码方式不一样,得到的二进制串结果也不一样。
并且'rb'方式open最后得到得结果也可以进行对应编码方式得decode,而不出现乱码。

至于为什么python在encode后,英文字符不是二进制串,应该是编译器打印时,ASCII能对应得就转换了
.#

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值