我正在使用Python 2.7和Pygame(使用Anaconda)开发应用程序。在应用程序中,我正在尝试用西里尔字符绘制文本,它永远不会显示正确。我知道这可能是一个编码问题,所以我将这一行包含在脚本的顶部:
#!/usr/bin/env python2
# -*- coding: utf-8 -*-
...然后我在每个字符串前面加上一个'u'。这有帮助,但只是部分 - 现在,而不是错误的字符我得到正方形!
有趣的是控制台打印出一切都很好。
为什么会发生这种情况,我该如何解决?
答案 0 :(得分:1)
这可能是因为您用于渲染文本的字体缺少西里尔字符。尝试找到100%西里尔文字体,然后按以下方式渲染文字:
my_font = pygame.font.Font("path/to/cyrillic_font.ttf", 12)
text_surface = my_font.render(u"Текст", True, (255, 255, 255))
答案 1 :(得分:0)
好的,事实证明它确实是一个字体问题。我没有意识到我用于测试的字体不支持西里尔字符。 仅供记录:即使使用正确的字体,您也需要包含“' u'在你走过的每根弦前面。另外,如果你要组合两个或多个字符串,每个字符串都需要' u'或者你会得到一个ASCII错误(" smt就像can'转换字符"。 谢谢大家!