2017-01-21 4 views
-1

Ich versuche, ein sauberes Schachbrett in Python 2.7 zu drucken, das eindeutige Zeichen wie ♟ verwendet.Wie kann ich Zeichen wie ♟ in Python drucken

Ich habe versucht, einfach einen Wert in einer Zeichenfolge ("g".replace(g, ♟)) zu ersetzen, aber es wird zu '\xe2\x80\xa6' geändert. Wenn ich das Zeichen in einen Online-ASCII-Konverter einfüge, wird "226 153 159" zurückgegeben.

+2

Warum würden Sie utf-8 in einen ASCII-Konverter? –

+0

Ich wollte nur sehen, was es wirklich ausgegeben hat. Vielleicht etwas Nützliches, aber ich denke nicht. – DSchana

+0

Es ist kein ASCII-Zeichen, sondern ein UTF-8-Zeichen. – Natecat

Antwort

2

ist ein Unicode-Zeichen. In Python 2 enthält str ASCII-Zeichenfolgen oder Binärdaten, während unicode Unicode-Zeichenfolgen enthält. Wenn Sie "♟" tun, erhalten Sie eine binär codierte Version der Unicode-Zeichenfolge. Was diese Kodierung ist, hängt von dem Editor/der Konsole ab, in der Sie sie eingegeben haben. Es ist üblich (und ich denke, dass es vorzuziehen ist), UTF-8 zu verwenden, um Zeichenfolgen zu kodieren, aber Sie können feststellen, dass Windows-Editoren Little-Endian-UTF-16-Zeichenfolgen bevorzugen.

In beiden Fällen möchten Sie Ihre Strings so viel wie möglich als Unicode schreiben. Sie können einige Mix-and-Matching zwischen str und unicode tun, aber stellen Sie sicher, dass alles außerhalb der ASCII-Code-Set von Anfang an Unicode ist.

Python kann einen Kodierungshinweis an der Vorderseite der Datei nehmen. Angenommen, Sie verwenden einen UTF-8-Editor, können Sie tun

[email protected]/usr/bin/env python 
# -*- coding: utf-8 -*- 

chess_piece = u"♟" 
print u"g".replace(u"g", chess_piece) 
Verwandte Themen