Я делаю карточную игру, но я столкнулся с тем, что кажется проблемой кодирования. Я пытаюсь распечатать такую карточку:
def print(self):
print("|-------|")
print("| %s |" % self.value)
print("| |")
print("| %s |" % self.suit.encode("utf-8"))
print("| |")
print("| %s |" % self.value)
print("|-------|")
Это то, что я хочу:
|-------|
| 10 |
| |
| ♦ |
| |
| 10 |
|-------|
... но это то, что я получаю:
|-------|
| 10 |
| |
| b'\xe2\x99\xa6' |
| |
| 10 |
|-------|
Я на Windows и Python 3, если это имеет значение.
Значение self.suit может быть любым из следующих:
spade = "♠"
heart = "♥"
diamond = "♦"
club = "♣"
Если я удаляю .encode( "utf-8" ), я получаю эту ошибку:
Traceback (последний последний вызов):
File "main.py", line 79, in <module>
start()
File "main.py", line 52, in start
play()
File "main.py", line 64, in play
card.print()
File "main.py", line 36, in print
print("| \u2660 |")
File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u2660' in position
4: character maps to <undefined>