为了账号安全,请及时绑定邮箱和手机立即绑定

utf8编码规则会受制于Unicode实际的字符对应吗?

utf8编码规则会受制于Unicode实际的字符对应吗?

慕工程0101907 2019-02-22 16:47:33
我用python 写'\xF5\x90\x90\x90'.decode('utf8') 但是报错了: UnicodeDecodeError: 'utf8' codec can't decode byte 0xf5 in position 0: invalid start byte 问题是:\xF5\x90\x90\x90 是个标准的四字节的utf8编码的字符啊 转换成二进制就是 11110101 10010000 10010000 10010000 完全符合utf8编码规则:11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 我把\xF5换成\xF2就没有问题了,也就是11110010开头,难道是因为Unicode实际上没有用到这么多的字符,所以不能decode('utf8')?但是规则是对的呀,万一哪天Unicode又扩充了很多字符集,那python的decode()函数岂不是要更新了?
查看完整描述

1 回答

?
婷婷同学_

TA贡献1844条经验 获得超8个赞

因为Unicode的范围是0x0000-0x10FFFF,我测试了一下,python中比规范更为宽松,最大支持到0xFFFFF,而你题目中输的已经超过这个范围所以报错了。
附:UTF-8标准 RFC3629

查看完整回答
反对 回复 2019-03-01
  • 1 回答
  • 0 关注
  • 603 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信