1

私のコードで行うこと:

まず、codecs.open... を使用して、UTF-8 テキストファイルをロードします (はい、ダブル/トリプル/クアッドチェック: UTF-8 です)。

def load_verbslist(folder, name, utf_encoding):
    fullname = os.path.join("daten", folder, name)
    if utf_encoding:
        with codecs.open(fullname, "r", "utf-8-sig") as name:
            lines = name.readlines()
    else:
        name = open(fullname, "r")
        lines = name.readlines()
    for x in range(0, len(lines)):
        lines[x] = lines[x].strip("\n")
        lines[x] = lines[x].strip("\r")
    return lines

そのファイルから、ソリューション文字列が得られます。後で行を分割し、すべてを再度エンコードして、次のように画面にブリットします。

class BlittedText():
    def __init__(self, number, colour):
        self.number = number
        self.colour = colour
        if self.number == 0: #Infinitiv
            self.content = Solution.verb[0]
            self.content = self.content.encode("utf-8")
            self.text = Main.font1.render(str(self.content), 1, self.colour)
            self.pos = (45, 45)

次に、これらの BlittedText() クラスのいくつかによって「Strings」という名前のリストを追加します。

次に、それを画面にブリットします。

for element in Strings:
    screen.blit(element, position)

結果はこの写真で見ることができます: http://img341.imageshack.us/img341/6617/ee43.png Python シェル (左側) では、すべてが正しく表示されます。ソリューション TXT ファイル (間違いなく、確実に、100% が UTF-8 として保存されます)。画面では、入力 (黒) は正しくブリットしますが、ソリューション文字列 (緑と赤) には、Unicode 文字ではなく奇妙な文字が表示されます。私は思った、私はそれらを適切にエンコードしましたが、明らかにそうではありません:/

誰かが私の間違いを見つけますか?私の考えはどこで間違っていますか?

すでにありがとうございます!

パット

4

1 に答える 1

2

utf-8レンダリングする前に文字列をエンコードしないでください。utf-8 にエンコードすると、奇妙な文字を含む通常の文字列が生成されます。

これを Latin-1 にエンコードすると、奇妙な文字が取り除かれます。

self.content = self.content.encode("iso-8859-1")
于 2013-07-02T01:28:56.247 に答える