Странное кодирование в pygame Python.Почему мне нужно кодировать в латинице-1, а затем декодировать в utf-8, чтобы получить правильные символы? - PullRequest
0 голосов
/ 24 сентября 2019

Итак, я пробую Pygame с Му и начал с очень простого кода, который создает окно и надписывает окно.Я бразилец, поэтому у меня есть слова с акцентами в этой подписи, и когда я запускаю код, все буквы перепутались.

Используемая мной строка: "Invasão Alienígena" .Когда я запускаю код, это превращается в "Invasà £ O AlienÃ-gena"

Так что я подумал, хорошо, это проблема, которая заканчивается.Я проверил с sys.stdout.enconding , который дал мне utf-8 .Я думал, что это странно, разве это не должно дать правильные символы, если я использую это завершение?Или я не правильно понимаю?

Я проверил версию Python и дал мне 3.6.3

Я искал шестнадцатеричные значения специальных символов и поместил их в строку, как в "Invas \ xE3o Alien \ xEDgena" и все заработало.Но я не был удовлетворен таким подходом.

Так что я прочитал много вещей и перепробовал все, что нашел, но ничего не получалось.Затем я начал играть и получил этот

title = "Invasão Alienígena" .encode ("latin-1"). Decode ("utf-8")

И это сработало!Я просто не могу понять, почему это сработало.Мне кажется, что pygame декодирует в latin-1 , а не в utf-8 , но я не могу знать наверняка.

`

import sys  
import pygame  

print(sys.stdout.encoding)  
print(sys.version)  
def run_game():  
    pygame.init()  
    print("Invasão Alienígena") #prints Invasão Alienígena to stdout  
    #title = "Invas\xE3o Alien\xEDgena" #If i use this it will work without encoding/decoding  
    title = "Invasão Alienígena".encode("latin-1").decode("utf-8") #this works
    screen = pygame.display.set_mode((1200, 600))  
    pygame.display.set_caption(title)  

    while True:  
        for event in pygame.event.get():  
            if event.type == pygame.QUIT:  
                sys.exit()  
        pygame.display.flip()  

run_game()  

`

Итак, что происходит?Я неправильно понял, как работает кодировка, или это необычное поведение?

...