♟
является символом юникода. В python 2 str
содержит строки ascii или двоичные данные, а unicode
содержит строки Unicode. Когда вы делаете "♟"
, вы получаете двоичную кодированную версию строки юникода. То, что эта кодировка зависит от редактора/консоли, которую вы использовали для его ввода. Его общий (и, как мне кажется, предпочтителен) использовать UTF-8 для кодирования строк, но вы можете обнаружить, что редакторы Windows предпочитают строки младшего порядка UTF-16.
В любом случае, вы хотите как можно больше написать свои строки как unicode. Вы можете сделать несколько сочетаний и совпадений между str
и unicode
, но убедитесь, что все, что находится за пределами набора ASCII-кода, является unicode с самого начала.
Python может взять подсказку в начале файла. Итак, если вы используете редактор UTF-8, вы можете сделать
[email protected]/usr/bin/env python
# -*- coding: utf-8 -*-
chess_piece = u"♟"
print u"g".replace(u"g", chess_piece)
Зачем вам помещать utf-8 в преобразователь ascii? –
Я просто хотел посмотреть, что он действительно выдаст. Возможно, что-то полезное, но я думаю, что нет. – DSchana
Это не символ ASCII, это символ UTF-8. – Natecat