0

我的目标是创建一个程序,用户可以通过该程序通过显示问题并通过输入解决问题来学习圣经经文(例如“引述创世纪 3:15”)。由于我必须使用的圣经翻译是德语,它包含大量的变音符号,这些变音符号从未正确显示。

我的 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)

4

1 回答 1

1

我将尝试总结:

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

希望这能让一些事情更清楚。有很多看起来像是编码错误的错误,而且要找出实际发生的事情并不总是那么容易。

于 2013-06-03T18:40:17.113 回答