尝试使用 pygame 绘制西里尔字符时出现正方形

I'm getting squares when trying to draw cyrillic characters with pygame

我正在使用 Python 2.7 和 Pygame(使用 Anaconda)开发应用程序。在应用程序中,我试图用西里尔字符绘制文本,但它永远无法正确显示。我知道这可能是一个编码问题,所以我在脚本的顶部包含了这一行:

#!/usr/bin/env python2
# -*- coding: utf-8 -*-

... 然后我在传递的每个字符串前添加一个 'u'。这有帮助,但只是部分帮助——现在,我得到的不是错误的字符,而是方块!

有趣的是控制台打印出来的一切都很好。

为什么会发生这种情况,我该如何解决?

这可能是因为您用于呈现文本的字体缺少西里尔字符。尝试找到 100% 西里尔文的字体,然后按以下方式呈现文本:

my_font = pygame.font.Font("path/to/cyrillic_font.ttf", 12)
text_surface = my_font.render(u"Текст", True, (255, 255, 255))

好的,果然是字体问题。我没有意识到我正在使用不支持西里尔字符的字体进行测试。 仅作记录:即使使用正确的字体,您也需要在要传递的每个字符串前包含 'u'。此外,如果您要组合两个或多个字符串,则每个字符串都需要 'u',否则您将收到 ASCII 错误 ("smt like can't convert character"。 谢谢大家!