UnicodeEncodeError: 'charmap' codec can T encode character Probleme...
Bevor jemand gibt mir Mist über diese aufgefordert, eine Milliarde mal, bitte beachten Sie, dass ich versucht habe, einige der Antworten, die in vielen thread, aber keiner von Ihnen schien zu funktionieren richtig für mein problem.
import json
def parse(fn):
results = []
with open(fn) as f:
json_obj = json.loads(open(fn).read())
for r in json_obj["result"]:
print(r["name"])
parse("wine.json")
Ich bin im Grunde nur das öffnen einer json-Datei aus und Durchlaufen Sie es für einige Werte. Natürlich, wenn ich lese einen Wert mit einigen unicode in es ich bekomme diese Fehlermeldung.
Traceback (most recent call last):
File "json_test.py", line 9, in <module>
parse("wine.json")
File "json_test.py", line 7, in parse
print(r["name"])
File "C:\Python34\lib\encodings\cp850.py", line 19, in encode
return codecs.charmap_encode(input,self.errors,encoding_map)[0]
UnicodeEncodeError: 'charmap' codec can't encode character '\u201c' in position
15: character maps to <undefined>
Als Menschen in anderen Themen sagte, ich habe versucht zu codieren und so weiter, aber dann bekomme ich eine ähnliche Fehlermeldung, egal wie ich es codieren und/oder decodieren. Bitte helfen Sie.
- Das problem ist, dass Sie drucken, um eine Windows-Konsole, die keine Möglichkeit zum drucken der Zeichen. Python ist die Detektion dieser für Sie, bevor Sie Kauderwelsch auf dem Bildschirm.
- Aber wenn ich paste das Zeichen
“
die \u201c in der Konsole sehe ich, dass es einfach gut? - Haben Sie einen Blick auf
cp850
, das Zeichen ist nicht da. Wenn ich versuche, einfügen, die auf meinem system wird es ersetzt mit"
. - Ich sehe. Was empfehlen Sie ich tun?
- Ich habe bereits verlassen, meine Empfehlung in der form einer Antwort.
Du musst angemeldet sein, um einen Kommentar abzugeben.
Alles ist in Ordnung bis zu dem Punkt, wo Sie versuchen, drucken Sie die Zeichenfolge. Um eine Zeichenfolge zu drucken, es muss zuerst umgewandelt werden, von der reinen Unicode, um die byte-Sequenzen unterstützt, die von Ihrem Gerät ausgegeben wird. Dies erfordert eine
encode
um die richtigen Zeichen gesetzt, die Python identifiziert hat, alscp850
- die Windows-Konsole standardmäßig.Beginnend mit Python 3.4 Sie können die Windows-Konsole, um die Verwendung von UTF-8 mit dem folgenden Befehl an der Eingabeaufforderung ein:
Dies sollte das Problem beheben, solange Sie so konfiguriert haben, dass das Fenster einen Zeichensatz, der dieses Zeichen enthält.
Beginnend mit Python-3.6 dies ist nicht mehr notwendig - Windows hat schon immer eine volle Unicode-Schnittstelle für die Konsole, und Python ist jetzt mit es an die Stelle der ursprünglichen code-Seite I/O. Unicode auf der Konsole funktioniert einfach.
Was ich am Ende tun, als eine mögliche temporäre Lösung (je nachdem, ob jemand eine bessere Antwort) wurde mit Unidecode. Leider verlor ich alle Akzente, aber vielleicht hat ja jemand eine Lösung für, die.