如何将Unicode组合在Python 2输出中?

时间:2015-10-24 13:56:07

标签: python python-2.7 unicode output

我有使用组合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.6.10_2

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

上方和下方的条形图。

1 个答案:

答案 0 :(得分:3)

您使用的是八进制转义符的Python表示法,而不是Unicode代码点。例如,如果要包含U+0332 COMBINING LOW LINEU+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