QTextEdit 中未正确显示不间断空格

Gir*_*ish 5 qt4

QTextEdit t; t.setHtml(" ");显示带有尖锐重音的小“a”而不是不间断空格。这只发生在 Windows 上,而不是 Linux 或 FreeBSD。这可能是什么原因造成的?Windows/Qt 中的错误?我怎样才能解决这个问题?

(Windows Vista x64 pro 上的 Qt 4.5。我的语言环境是默认的“C”。)

更新:我有一种感觉,这是 Qt/Windows 中的错误(已经提交了错误报告)。我已经创建了一个解决方法,但它很丑陋,并且涉及更改我的格式算法并使用<pre> </pre>CSS 来生成所需的输出。

有没有更简单的解决方法?

更新:&8194; 和 &8195; 两者都按照'wcm'的建议工作。假设这也适用于其他用户是否安全? &nbsp;不工作可能仍然是一个错误,但是 &8194; 似乎是一种可以接受的解决方法(?)。

更新:结果我错过了一些重要的事情:&nbsp;在 Qt/Windows 中,仅使用我正在使用的名为“终端”的特定单字字体呈现错误。当我切换到“Lucida Console”(或任何其他字体)时,&nbsp;渲染正确!伙计,我希望我早点注意到这一点!该死。所以显然某处有一个错误(很可能在 Qt 中)。但是没关系,至少对我来说使用不同的字体已经解决了这个问题。

更新:这不是我之前认为的 Qt 中的错误。要了解&nbsp;错误呈现的原因,请参阅 Tewha 的回答。

[解决了]

Ste*_*her 2

我发现您已经基本弄清楚了这一点,但我想我应该添加其中的“原因”。终端字体基于代码页 437,又名 DOS-US。\xc3\xa1 位于位置 160。

\n\n

代码页 437 的字体并不多。事实上,我认为 Terminal 是唯一的 TrueType 字体!无论如何,如果您没有明确尝试显示旧式 DOS 图形,则不应使用终端。

\n\n

代码页 437 到底是什么意思?它是“高 ASCII”,大约 1981 年。除了通常的 32-127 个字符之外,它还包括一些重音字母、用于在事物周围绘制边框的方框图形字符、一些数学符号,甚至是四组纸牌的符号!但世界以不同的方式变化,因此除了 32-127 之外,即使是其他字体中通常可用的字形也不是您所期望的。如果您在窗口中运行旧的文本模式 MSDOS 程序,它将使用代码页 437 字体。

\n\n

有关详细信息,请参阅“代码页 437 ”(维基百科)。

\n