如何在Python中插入Unicode左半黑星(U+2BE8)字符?
解决左半黑星(U+2BE8)显示异常及UTF-16解码问题
一、修复UTF-16解码错误
你当前的UTF-16解码代码异常,核心原因是字节顺序不匹配且缺少字节序标记(BOM):
- U+2605(黑星)的UTF-16小端字节序为
\x05\x26,但Python默认解码UTF-16时,会优先通过BOM判断字节序,无BOM则默认按大端处理,导致解码错乱。 - 正确写法有两种:
- 显式指定小端字节序:
print((b'black star: \x05\x26').decode("utf-16-le"))- 追加UTF-16小端BOM(
\xff\xfe):
print((b'\xff\xfe' + b'black star: \x05\x26').decode("utf-16"))
二、左半黑星(U+2BE8)显示异常的解决
你遇到的“未识别字符”问题,本质是系统/文件查看工具的字体不支持Unicode 11.0新增的U+2BE8字符,而非代码写入错误。可按以下步骤处理:
1. 验证字符是否正确生成
先确认代码是否真的输出了目标字符:
half_star = '\u2BE8' print(f'half black star: {half_star}') print(f'Unicode码点: {ord(half_star)}') # 正常输出应为11240(U+2BE8的十进制值)
若ord()输出为11240,说明字符本身正确,仅显示环节有问题。
2. 更换支持该字符的字体
U+2BE8是2018年Unicode 11.0新增字符,多数系统默认字体(如Windows宋体、Mac苹方)未包含其字形,需更换为支持新Unicode版本的字体:
- 推荐字体:Noto Sans Symbols 2、Segoe UI Emoji、Twemoji、Symbola
- 操作方式:
- 控制台:在终端设置中切换为上述字体
- TXT文件:打开时手动选择支持的字体,或设置文件默认使用该字体
3. 简化字符输出方式
避免手动拼接UTF-8字节,直接用Unicode转义序列输出更可靠:
# 用Unicode转义序列直接输出 print('half black star: \u2BE8') # 或用chr()函数调用码点 print(f'half black star: {chr(0x2BE8)}')
三、写入TXT文件的注意事项
写入文件时务必指定UTF-8编码,避免编码转换丢失字符:
with open('stars.txt', 'w', encoding='utf-8') as f: f.write(f'黑星: \u2605\n白星: \u2606\n左半黑星: \u2BE8')
打开文件时同样需使用UTF-8编码,并搭配支持的字体查看。
内容的提问来源于stack exchange,提问作者BlondCode
相关产品推荐
相关产品推荐

