Ви також можете надрукувати об'єкти Unicode, вам не потрібно робити str () навколо нього.
Якщо припустити, що ви дійсно хочете str:
Коли ви виконуєте str (u '\ u2013'), ви намагаєтесь перетворити рядок Unicode у 8-розрядний рядок. Для цього вам потрібно використовувати кодування, зіставлення даних Unicode з 8-бітними даними. Що str () робить, це те, що використовує системне кодування за замовчуванням, яке під Python 2 є ASCII. ASCII містить лише 127 перших кодових точок Unicode, тобто від \ u0000 до \ u007F1. В результаті ви отримуєте вищезазначену помилку, кодек ASCII просто не знає, що це таке (довгий штрих, до речі).
Тому вам потрібно вказати, яке кодування ви хочете використовувати. Загальними є ISO-8859-1, найвідоміший як Latin-1, який містить 256 перших кодових точок; UTF-8, який може кодувати всі кодові точки за допомогою кодування змінної довжини, CP1252, який є загальним для Windows, та різних китайських та японських кодувань.
Ви використовуєте їх так:
u'\u2013'.encode('utf8')
Результатом є str, що містить послідовність байтів, яка є представленням uTF8 відповідного символу:
'\xe2\x80\x93'
І ви можете роздрукувати його:
>>> print '\xe2\x80\x93'
–