PyGame и Unicode – бесконечная история

Что я делаю в своем коде:

1-й я загружаю текстовый файл UTF-8 (да, двойная / тройная / четверная проверена: это UTF-8), используя с codecs.open …

  • Управление группами в pygame
  • Как добавить текст в прямоугольник pygame
  • Pygame: key.get_pressed () не совпадает с очередью событий
  • Pygame (Python) - TypeError: Аргумент должен быть прямым объектом стиля
  • Преобразование кортежа в список и обратно
  • Какой инструментарий gui следует использовать с Pygame?
  • 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 ().

    Затем я втиснул его в экран:

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

    Результат можно увидеть на этой картинке: http://img341.imageshack.us/img341/6617/ee43.png В оболочке Python (слева) все отображается правильно, мои входы (очень левая сторона) в виде строк из файл решения TXT (который определенно, безусловно, 100% сохраняется как UTF-8). На экране мой вход (черный) срабатывает правильно, а строки решения (зеленый и красный) показывают странные символы вместо символов Юникода. Я думал, я правильно закодировал их, но, очевидно, не: /

    Кто-нибудь находит мою ошибку? Где мое мышление пошло не так?

    Большое вам спасибо!

    похлопывание

  • Преобразовать строку в список на Python без использования Eval?
  • вывод трубопровода подпроцесса. Открытие файлов
  • Как установить явно размер терминала при использовании pexpect
  • Преобразование строки Unicode в строку в Python (содержащий дополнительные символы)
  • Количество элементов суммы в массиве на основе его значения
  • Не удается заставить плагины CKEditor работать в django
  • One Solution collect form web for “PyGame и Unicode – бесконечная история”

    Вы не должны кодировать строку до utf-8 перед рендерингом. Когда вы кодируете его в utf-8, вы генерируете регулярную строку со странными символами.

    Если вы закодируете его на латинский-1, вы избавитесь от странных символов:

     self.content = self.content.encode("iso-8859-1") 
    Python - лучший язык программирования в мире.