python 2.7 character \u2013

python, python-2.7, utf-8, windows-console

Solution

Your string contain ndash sumbol. It similr to ascii minus `-`, see symbol No 45 an ascii table. Replace ndash to minus, because ascii can't contain ndash. Below work variant:

# -*- 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

output

William Burges (1827-81) was an English architect and designer. I am here. 

Problem

I have following code: ``` # -*- coding: utf-8 -*- print u"William Burges (1827–81) was an English architect and designer." ``` When I try to run it from cmd. I get following message: ``` 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> ``` How could I solve this problem and make Python read this \u2013 character? And why Python doesn't read it with existing code, I thought that utf-8 works for every character. Thank you EDIT: This code prints out wanted outcome: ``` # -*- coding: utf-8 -*- print unicode("William Burges (1827-81) was an English architect and designer.", "utf-8").encode("cp866") ``` But when I try to print more than one sentence, for example: ``` # -*- coding: utf-8 -*- print unicode("William Burges (1827–81) was an English architect and designer. I am here. ", "utf-8").encode("cp866") ``` I get same error message: ``` 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> ```

Original source

Related problems