我有使用组合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'
上方和下方的条形图。答案 0 :(得分:3)
您使用的是八进制转义符的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。