无法以 unicode 打印某些上标

Posted

技术标签:

【中文标题】无法以 unicode 打印某些上标【英文标题】:Cannot print certain superscripts in unicode 【发布时间】:2016-06-09 01:33:47 【问题描述】:

使用此页面 How to find the unicode of the subscript alphabet? 我可以打印除 j、l、r、w、y、s 和 h 之外的所有上标。 Unicode 显然已经为这些上标编码,但由于某种原因,它在 Python 中不起作用。所以对于其他的上标我只写:

ua = u"\u1d43"
ub = u"\u1d47"
uc = u"\u1d9c"
ud = u"\u1d48"
ue = u"\u1d49"
uf = u"\u1da0"
ug = u"\u1d4d"
ui = u"\u2071"
uk = u"\u1d4f"
um = u"\u1d50"
un = u"\u207f"
uo = u"\u1d52"
up = u"\u1d56"
ut = u"\u1d57"
uv = u"\u1d5b"
uu = u"\u1d58"

但是当我为麻烦的上标执行此操作时,我收到错误消息:“SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-4: truncated \uXXXX escape”没有意义。这是我用于无法使用的上标的代码:

uw = u"\u2b7"
uy = u"\u2b8"
uj = u"\u2B2"
ul = u"\u2E1"
ur = u"\u2b3"
us = u"\u2e2"
uh = u"\u2b0"

这一定与所有这些上标都以 2 开头并且只有 3 位数字有关。我也试过用大写和小写字母重写代码。

【问题讨论】:

【参考方案1】:

假设 Python 3,它应该是 16-bit or 32-bit hex(即 4 或 8 位)代码。您的错误消息通过说 \uXXXX 来暗示 4 位数的要求:

>>> uw = u"\u2b7"
  File "<stdin>", line 1
SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 0-4: truncated \uXXXX escape

但是,您也可以通过其他两种方式对 Unicode 字符进行编码(请参阅上面链接的文档):

>>> uw = u"\u02b7"
>>> uw = u"\u000002b7"
>>> uw = u"\NMODIFIER LETTER SMALL W"
>>>

【讨论】:

太棒了。如果这是一个可接受的解决方案,请不要忘记接受答案。谢谢!

以上是关于无法以 unicode 打印某些上标的主要内容,如果未能解决你的问题,请参考以下文章

如何在Python 3中打印上标/下标?

浏览器打印出一段unicode码,汉字无法正常显示

特殊字符Unicode Entity Codes表

Unicode 可打印字符的范围是多少?

python print 方法 打印 unicode 遇到的坑

拼命尝试使用 wprintf 在 64 位 NASM x86 程序集中打印 unicode