python3的字符串编码问题

python3的字符串编码问题

在Python3中,有两种默认的字符编码类型,bytes和str。str表示字符Unicode字符,在Python命令行中,Unicode字符会默认的转换成可显示的字符串格式,而不会显示其本身的二进制码。我们直接用单引号或者双引号定义的字符串就是str类型

我们可以通过ord函数获取其对应的十进制数字,并通过char方法获取对应的Unicode字符。如果我们知道其十六进制代码,我们还可以直接通过十六进制代码定义字符串其格式为\uxxxx:

c='好'
d = ord(c)
chr(d)
print(d)
hex(d)

bytes表示字符在某种编码下的二进制码,如果知道某个字符串在某个字符编码下的二进制码,我们可以直接使用b’\uxxxx’的形式来定义bytes二进制码,与str类型的字符串相比,前面多了一个字母b,表示其类型为bytes。

str类型的字符串可以通过encode方法转换为bytes二进制码,同样bytes二进制码可以通过decode方法转换为str类型的字符串:

c='hello'
d = c.encode('unicode escape')
d.decode('unicode escape')
print(d)

读取文件和网络资源的时候,是bytes对象,需要先解码,就是执行decode,如果我们不确定当前文件的字符编码,我们可以使用chardet.detect获取对应的字符编码:

import chardet
a = b'hello,world'
print(a)
charset = chardet.detect(a)
print(charset)
b = a.decode(charset['encoding'])
print(b)

文件写入时的字符编码:在文件写入时,我们只能写入bytes对象,因此,我们需要将str对象以utf-8编码编码成bytes对象,再进行存储。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值