PyGame:正确使用Unicode

时间:2013-06-03 13:15:19

标签: unicode pygame

我的目标是创建一个程序,用户可以通过输入显示问题并通过输入解决问题来学习圣经经文(例如,#34;引用第3:15和第34页)。作为圣经翻译,我必须与之合作,是德语,它包含大量的变音符号,它们永远不会正常显示。

我的PyGame文件标题:

#!/usr/bin/python
# -*- coding: utf-8 -*-

后来,我列出了三个德国变音符号:

u'ö'.encode('utf-8')
u'ä'.encode('utf-8')
u'ü'.encode('utf-8')

此函数解析txt文件:    def load_list(listname):

fullname = os.path.join("daten", listname + ".txt")
with codecs.open(fullname, "r", "utf-8-sig") as name:
    lines = name.readlines()
for x in range(0, len(lines)):
    lines[x] = lines[x].strip("\n")
    lines[x] = lines[x].strip("\r")
print lines

我知道,我可以将这两行与strip-commands结合起来,但这不是主题。

如何让我的PyGame正确显示文本文件中的变音符号,以及正确显示用户输入的变音符号?我检查了数百条建议,但我无法在这里找到任何有用的东西。

在我失去理智之前,我们非常感激任何帮助(好吧,因为我坐在这里,编码游戏,我可能已经做过了:D)

1 个答案:

答案 0 :(得分:1)

我会试着总结一下:

  • 打印除字符串或unicode opject之外的其他内容会触发该对象的__repr__()方法。如果它是一个序列,这也适用于包含的元素,导致任何非ascii字符使用\xXX(或\uXXXX)表示法进行转义。请注意print 'text'print ['text']之间的区别:在后一种情况下,字符串的引号也将被打印(当然除了括号之外)。使用str.join()连接字符串列表以控制输出的显示方式。
  • 最好总是明确地解码输入(就像使用codecs一样)并对输出进行编码(在你的问题的代码片段中没有这样做)。
  • 源文件编码(标头中的# coding: utf8行)与输入和输出的编码无关。它只允许您在字符串文字中键入非ascii字符(=源文件中引号内的字符),而不是使用\xXX转义。

希望能让事情变得更加清晰。有很多可能出现错误,看起来像编码错误,并且找出实际发生的情况并不总是很容易。