python编码问题——“utf-8”与“gbk”

在进行CRNN训练中文字体OCR时,楼主碰到了令人头疼的问题,中英文编码不同。
这边文章主要来讲一下“utf-8”与“gbk”的一些问题,有人或许会问不是还有一个unicode吗?看完下面一张图就知道啦。
在这里插入图片描述
unicode其实是一种在操作过程中存在的字符状态,一般来讲,例如python中的str都是以“unicode”编码,在进行操作时会具化成为“utf-8”与“gbk”,往往是前者居多。
如上图所示,在python中不同编码的转换都要经过Unicode,不论是UTF-8或者是GBK,整个过程都是先通过编码decode转换为Unicode告诉Unicode当前的编码格式是什么、然后再通过解码encode转换为自己想要实现的编码格式或类型。
看下下面的命令,会清楚很多。

s = '你好'  
# str类型,默认编码为unicode
print(s.encode("gbk")) 
# Unicode转gbk
# 输出为:b'\xc4\xe3\xba\xc3'
s = s.encode("gbk")
# 将gbk的s编码赋给s
print(s)
# 显然输出为: b'\xc4\xe3\xba\xc3'
print(len(s))
# 输出长度为 **4**
print(s.decode('gbk').encode("utf-8")) 
 # Unicode转utf-8
#输出为: b'\xe4\xbd\xa0\xe5\xa5\xbd'
#在这条语句中,由于先前s已经变成了gbk编码,所以得先解码变成unicode,再进行编码,否则报错
s = s.decode('gbk').encode("utf-8")
print(s)
#显然输出为: b'\xe4\xbd\xa0\xe5\xa5\xbd
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值