如何组合 Unicode 以在 Python 2 输出中工作?

How do I get combining Unicode to work in Python 2 output?

我有使用组合 unicode 的字符串,但无法让 Python 2.7 正确显示它们。

比如我有

"IJK83LMN"

应该显示为*

IJK̲̅LMN

而是显示为

JK8ǻLMN

当我

from __future__ import (print_function, unicode_literals)
print("IJK83LMN")

from __future__ import (print_function, unicode_literals)
print(unicode("IJK83LMN").encode('utf-8'))

我可以确认我正在打印的设备可以正确显示组合 unicode。

如何组合 Unicode 以在 Python 2.7 输出中工作?


OS X: 10.11.1;自制软件 Python 2.7.10_2

* 实际上,这也可能无法在您的浏览器中正确显示。它在我的中正确显示:'K'.

上方和下方的栏

您正在使用 Python 符号表示 octal 转义,而不是 Unicode 代码点。例如,如果你想包含 U+0332 COMBINING LOW LINE and U+0305 COMBINING OVERLINE 字符,你需要在 Unicode 字符串中使用 \uhhhh hex 转义序列:

>>> print u'IJK\u0332\u0305LMN'
IJK̲̅LMN

这里818十进制是0332十六进制,773是0303十六进制

你得到的是 8,因为 818 不是有效的八进制数(数字在 0-7 范围内)。 3 八进制转换为 U+01FB LATIN SMALL LETTER A WITH RING ABOVE AND ACUTE.