如何在Python中输出多字节Unicode字符(以上标2为例)
问题解决:Python中输出3字节Unicode上标字符
错误原因
你输入的0xe28282是UTF-8编码的字节序列拼接值,并非该字符的Unicode码点。chr()函数需要传入单个Unicode码点(范围0x0000到0x10FFFF),而0xe28282的十进制值为14828162,远超Unicode码点的最大范围0x10FFFF(十进制1114111),因此触发ValueError。
上标'2'的实际Unicode码点是U+00B2,对应的UTF-8编码是三个字节:0xE2 0x82 0x82。
正确实现方法
方法1:用Unicode码点调用chr()
print(chr(0xB2)) # 输出:² # 完整码点写法也可行 print(chr(0x00B2))
方法2:直接写入字符本身
Python支持直接在代码中输入Unicode字符(确保编辑器编码为UTF-8):
print('A/cm²') # 输出:A/cm²
方法3:通过UTF-8字节序列解码
如果只有UTF-8的字节值,可构造bytes对象后解码:
print(b'\xe2\x82\x82'.decode('utf-8')) # 输出:²
方法4:使用Unicode转义序列
# 十六进制转义写法 print('A/cm\u00B2') # 输出:A/cm² # 字符名称转义写法 print('A/cm\N{SUPERSCRIPT TWO}') # 输出:A/cm²
内容的提问来源于stack exchange,提问作者kazutaka
相关产品推荐
相关产品推荐

