无法在Windows上显示下标2的Unicode字符
我在一个QLabel里显示一个来自xml文件的unicode字符串。我需要在QLabel中显示H2O,但想把数字'2'显示为下标(Unicode字符U+2082)。QLabel可以接受html字符串,但我不能把这个html放进xml里。
在Linux上显示得很好,但在Windows上,下标的'2'却显示成了一些乱码。我尝试了很多不同的方法(包括更改字体),但在Windows上都没有效果。为什么会这样呢?
1 个回答
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位系统上,它显示的是: