python 2.7 символ \ u2013

У меня есть следующий код:

# -*- coding: utf-8 -*- print u"William Burges (1827–81) was an English architect and designer." 

Когда я пытаюсь запустить его из cmd. Я получаю следующее сообщение:

 Traceback (most recent call last): File "C:\Python27\utf8.py", line 3, in <module> print u"William Burges (1827ŌĆō81) was an English architect and designer." File "C:\Python27\lib\encodings\cp775.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can't encode character u'\u2013' in position 20: character maps to <undefined> 

Как я могу решить эту проблему и заставить Python читать этот символ \ u2013? И почему Python не читает его с существующим кодом, я думал, что utf-8 работает для каждого символа.

спасибо

РЕДАКТИРОВАТЬ:

Этот код выводит желаемый результат:

 # -*- coding: utf-8 -*- print unicode("William Burges (1827-81) was an English architect and designer.", "utf-8").encode("cp866") 

Но когда я пытаюсь напечатать несколько предложений, например:

 # -*- coding: utf-8 -*- print unicode("William Burges (1827–81) was an English architect and designer. I am here. ", "utf-8").encode("cp866") 

Я получаю такое же сообщение об ошибке:

 Traceback (most recent call last): File "C:\Python27\utf8vs.py", line 3, in <module> print unicode("William Burges (1827ŌĆō81) was an English architect and desig ner. I am here. ", "utf-8").encode("cp866") File "C:\Python27\lib\encodings\cp866.py", line 12, in encode return codecs.charmap_encode(input,errors,encoding_map) UnicodeEncodeError: 'charmap' codec can't encode character u'\u2013' in position 20: character maps to <undefined> 

    3 Solutions collect form web for “python 2.7 символ \ u2013”

    Я подозреваю, что проблема связана с оператором печати, а не с чем-то, что присуще python (он отлично работает на моем Mac). Чтобы напечатать строку, необходимо преобразовать ее в отображаемый формат; более длинная тире, которую вы использовали, не отображается в наборе символов по умолчанию в командной строке Windows.

    Разница между двумя предложениями не в длине, а в типе, используемом в "(1827-81)" против "(1827-81)" – видите ли вы тонкую разницу? Попробуйте скопировать и вставить один поверх другого, чтобы проверить это.

    См. Также Python, Unicode и консоль Windows .

    На wiki.python.org есть статья wiki.python.org об этой проблеме https://wiki.python.org/moin/PrintFails, которая объясняет, почему это может случиться с кодеком charmap .

    Setting the PYTHONIOENCODING environment variable as described above can be used to suppress the error messages. Setting to "utf-8" is not recommended as this produces an inaccurate, garbled representation of the output to the console. For best results, use your console's correct default codepage and a suitable error handler other than "strict".

    Ваша строка содержит ndash sumbol. Это похоже на ascii минус - см. Символ № 45 в таблице ascii . Замените ndash на минус, потому что ascii не может содержать ndash. Ниже варианта работы:

     # -*- coding: utf-8 -*- my_string = "William Burges (1827–81) was an English architect and designer." my_string = my_string.replace("–", "-")# replace utf-8 symbol (ndash) to ascii (-) print my_string 

    вывод

     William Burges (1827-81) was an English architect and designer. I am here. 
    Python - лучший язык программирования в мире.