我有使用组合 unicode 的字符串,但无法让 Python 2.7 正确显示它们。
例如我有
"IJK\818\773LMN"
应显示为*
IJK̲̅LMN
而是显示为
JK\818ǻLMN
当我
from __future__ import (print_function, unicode_literals)
print("IJK\818\773LMN")
或
from __future__ import (print_function, unicode_literals)
print(unicode("IJK\818\773LMN").encode('utf-8'))
我可以确认我正在打印的设备可以正确显示组合的 unicode。
如何组合 Unicode 以在 Python 2.7 输出中工作?
OS X:10.11.1;自制Python 2.7.10_2
* 实际上,这也可能无法在您的浏览器中正确显示。但它在我的中正确显示:“K”上方和下方有一个条。
最佳答案
您使用的是 Python 表示法来表示八进制转义符,而不是 Unicode 代码点。如果您想包括 U+0332 COMBINING LOW LINE和 U+0305 COMBINING OVERLINE例如,您需要在 Unicode 字符串中使用 \uhhhh
hex 转义序列:
>>> print u'IJK\u0332\u0305LMN'
IJK̲̅LMN
这里十进制的818是十六进制的0332,而773是十六进制的0303。
您得到的是 \818
,因为 818
不是有效的八进制数(其中数字在 0-7 范围内)。八进制的 \773
转换为 U+01FB LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE .
关于python - 如何将 Unicode 组合到 Python 2 输出中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33318988/