Python处理中文的GBK编码和UTF-8编码

#!/usr/bin/python3
# -*- coding: utf-8 -*-

s='为人民服务'
#Python默认使用UTF-8编码处理中文,英文在GBK和UTF-8里得会正常显示

print(s.encode('utf-8'))
#它的UTF-8编码在内存中是这样的:
# b'\xe4\xb8\xba\xe4\xba\xba\xe6\xb0\x91\xe6\x9c\x8d\xe5\x8a\xa1'

#通过encode方法,可以把它变GBK编码
print(s.encode('gbk'))
#它的GBK编码在内存中是这样的:
#b'\xce\xaa\xc8\xcb\xc3\xf1\xb7\xfe\xce\xf1'

s_binary=b'\xce\xaa\xc8\xcb\xc3\xf1\xb7\xfe\xce\xf1'
#在内存中输入以上byte,得到一个bytes类型

#使用decode方法解码,告诉编码器把bytes按GBK的编码重组成UTF-8编码的字符串
s_u8=s_binary.decode('gbk')

print(s_u8)

#强行把GBK编码按UTF-8编制重组,会产生错误
s_u8=s_binary.decode('utf-8')

print(s_u8)
#这里会抛出一个错误:
# #UnicodeDecodeError: 'utf-8' codec can't decode byte 0xc8 in position 2: invalid continuation byte
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值