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

0 投票
1 回答
1513 浏览
提问于 2025-04-17 12:13

我在一个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位系统上,它显示的是:

这里输入图片描述

撰写回答