Kann nicht drucken, Zeichen '\u2019' in Python-aus JSON-Objekt

Als ein Projekt, um mir zu helfen, lernen, Python, mache ich eine CMD-viewer von Reddit mit der json-Daten (zum Beispiel www.reddit.com/all/.json). Wenn bestimmte Beiträge zeigen, und ich versuche zu drucken (das ist, was ich annehme, die Ursache der Fehler), bekomme ich diesen Fehler:

Traceback (most recent call last):
Datei "C:\Users\nsaba\Desktop\reddit_viewer.py", line 33, in
print ( "%d.... (%d) %s\n" % (i+1, obj['data']['score'], obj['data']['title']))

Datei "C:\Python33\lib\encodings\cp437.py", line 19, in encode
zurück codecs.charmap_encode(input,selbst.Fehler,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can T encode character '\u2019' in position
32: Charakter-Karten zu

Hier ist, wo ich die Daten zu verarbeiten:

request = urllib.request.urlopen(url)
content = request.read().decode('utf-8')
jstuff = json.loads(content)

Die Linie, die ich verwenden, um die Daten zu drucken, wie aufgeführt in der oben genannten Fehler:

print ( "%d. (%d) %s\n" % (i+1, obj['data']['score'], obj['data']['title']))

Kann jemand empfehlen, wo ich vielleicht falsch läuft?

  • Das problem fast hat sicherlich nichts mit JSON, oder mit irgendetwas anderem in Ihrem code. Probieren Sie es einfach print('\u2019') und sehen Sie, wenn Sie die gleichen Fehler. Wenn ja, das problem ist, dass dein terminal ("DOS-box") ist nicht eingestellt die Unicode-Ausgabe richtig, und das ist, was Sie brauchen, um zu beheben.
  • Ja, du hast Recht. Der Grund für die zusätzlichen Daten, denn ich habe gelernt, Fragen zu stellen angesichts der Informationen, die ich habe, und nicht darüber, was ich denke, es könnte sein.
  • Aber man sollte die post die minimale vollständiges Beispiel, das dein problem. Das ist es, was ein SSCCE ist alles über. Wenn print('\u2019') ist ausreichend, um nachzuweisen, dass es, mehr kompliziertes Beispiel wird nur dazu führen, dass Menschen auf Wildgans Verfolgungsjagden. Wenn Sie befürchten, die Menschen könnten sich Fragen: "Warum würden Sie wollen, drucken Sie dieses Zeichen?", dann können Sie den Kontext, der es erklärt... aber trotzdem führen die mit dem eigentlichen problem.
  • Auch, wenn Sie haben ein problem mit Python 3, vor allem, wenn es über etwas, das ein major-Wechsel von Python 2 (wie Unicode-Druck) verwenden Sie den python-3.x-tag. Ansonsten, eine Menge Leute werden geben Sie eine Python-2.x-spezifische Antwort (wie in der Tat, zwei Menschen haben hier...).
InformationsquelleAutor N-Saba | 2013-08-27
Schreibe einen Kommentar