如何获取表情符号的UTF-8二进制表示?代码执行结果异常求助
问题原因与解决方案:获取表情符号的UTF-8二进制表示
原因分析
你遇到的差异是Python 2和Python 3字符串模型的区别导致的:
- 视频中的代码逻辑基于Python 2:Python 2的
str类型本质是字节串,表情符号👍在UTF-8编码下占4个字节,所以len(s)返回4,s[0]取到第一个字节\xf0。 - 你当前使用的是Python 3:Python 3彻底区分了Unicode字符串(
str)和字节串(bytes)。str类型存储的是Unicode码点,👍是单个Unicode码点,因此len(s)返回1,s[0]直接返回整个表情符号。
正确获取UTF-8二进制表示的方法
要获取表情符号的UTF-8字节序列,需要先将Unicode字符串编码为bytes类型,使用encode('utf-8')方法:
基础示例代码
s = '👍' # 转换为UTF-8字节串 utf8_bytes = s.encode('utf-8') # 查看字节长度(UTF-8下占4字节) print(len(utf8_bytes)) # 输出:4 # 查看单个字节的十进制/十六进制值 print(utf8_bytes[0]) # 输出:240(对应十六进制0xf0) print(hex(utf8_bytes[0])) # 输出:0xf0 # 查看完整的UTF-8字节序列 print(utf8_bytes) # 输出:b'\xf0\x9f\x91\x8d'
遍历输出每个字节的十六进制格式
如果需要逐个输出字节的\x格式:
for byte in utf8_bytes: print(f'\\x{byte:02x}')
输出结果:
\xf0 \x9f \x91 \x8d
内容的提问来源于stack exchange,提问作者ecjb
相关产品推荐
相关产品推荐

