无法在Windows上显示下标2的unicode字符

时间:2012-02-03 01:23:22

标签: python windows unicode pyqt

我在QLabel中显示来自xml文件的unicode字符串。我需要在QLabel中显示H 2 O,但是数字'2'作为下标(Unicode字符U + 2082)。 QLabel可以使用html字符串,但我不能把这个html放到xml中。

它在Linux中正确显示,但在Windows中它显示了一些垃圾而不是下标2.我尝试了许多不同的方法(包括更改字体系列),但它们都不适用于Windows。为什么呢?

1 个答案:

答案 0 :(得分:3)

这可能是一个字体问题,而不是Python。并非Windows中的所有字体都具有U + 2082。您需要选择包含此字符的正确字体。

例如“Arial Unicode MS”就是这样。请考虑以下示例:

import sys
from PyQt4 import QtGui

app = QtGui.QApplication(sys.argv)
widget = QtGui.QWidget()

unicode_font = QtGui.QLabel(u"Unicode Font: H\u2082O")
unicode_font.setStyleSheet("font-family: 'Arial Unicode MS', Arial, sans-serif; font-size: 15px;") 

normal_font = QtGui.QLabel(u"Normal Font: H\u2082O")
normal_font.setStyleSheet("font-family: Arial, sans-serif; font-size: 15px;")


layout = QtGui.QVBoxLayout()
layout.addWidget(unicode_font)
layout.addWidget(normal_font)
widget.setLayout(layout)
widget.show()
sys.exit(app.exec_())

在Win 7 32-Bit上,它给出了:

enter image description here