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

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

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

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: UnicodeDecodeError: кодек ascii не может декодировать байт 0xef в позиции 0: порядковый номер не в диапазоне (128)
  • Как реализовать соответствие строк в Unicode, складывая в python
  • Запись строки utf-8 внутри моих файлов python
  • Python 3: Как указать stdin-кодирование
  • Unicode против UTF-8 путаницы в Python / Django?
  • UnicodeDecodeError, недопустимый байт продолжения
  • NameError: глобальное имя 'unicode' не определено - в Python 3
  • Преобразование Unicode в python
  • One Solution collect form web for “PyGame и Unicode – бесконечная история”

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

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

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