Seite 1 von 1

JSON Umlaute

Verfasst: Freitag 30. Januar 2015, 23:26
von nvidia11
dict = {}
dict[u'Züge'] = 0

json.dumps(dict, file, ensure_ascii=false)

UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 2: ordinal not in range(128)

wie kann man das beheben?

ich möchte, dass man später im File das ü sieht!

Re: JSON Umlaute

Verfasst: Freitag 30. Januar 2015, 23:52
von BlackJack
@nvidia11: Vielleicht zeigst Du erst einmal den tatsächlichen Quelltext mit dem dazu passenden kompletten Traceback. `dumps()` nimmt nämlich keine Datei als Argument und `false` dürfte einen `NameError` ergeben. Und ich *rate* jetzt mal dass das eigentliche Problem gar nicht vom `dumps()` kommt, sondern von dem Versuch eine Unicode-Zeichenkette mit ``print`` auszugeben ohne die vorher entsprechend dem zu kodieren was das Programm auf der anderen Seite erwartet. Das hätte dann nichts mit JSON zu tun.

Re: JSON Umlaute

Verfasst: Freitag 30. Januar 2015, 23:59
von nvidia11
Ja srry :D

Code: Alles auswählen

# -*- coding: utf-8 -*-
import json
from collections import OrderedDict

fdata = OrderedDict()
fdata[u"Züge"] = 0#data
fdata[u"Bahnhöfe"] = 0#train_stations

with open("/Users/user/Desktop/Try/trains.json", "w") as outfile:
    json.dump(fdata, outfile, indent=2, ensure_ascii=False)
Es liegt am OrderedDict!!
Mit einem normalen Dict funktioniert es ohne Fehler.

Re: JSON Umlaute

Verfasst: Samstag 31. Januar 2015, 10:57
von Sirius3
@nvidia11: Das liegt garantiert nicht am OrderedDict. Mit ensure_ascii=False liefert json einen Unicode-String und der Nutzer muß selbst dafür sorgen, dass der richtig codiert geschrieben wird.

Re: JSON Umlaute

Verfasst: Samstag 31. Januar 2015, 13:28
von /me
nvidia11 hat geschrieben:Es liegt am OrderedDict!!
Nein, das liegt daran, dass du die Datei mit dem falschen Encoding öffnest. Ergänze beim open als Parameter und Wert encoding='UTF-8' und alles wird gut.

Re: JSON Umlaute

Verfasst: Donnerstag 5. Februar 2015, 01:01
von nvidia11
ok das hat geklappt.

Re: JSON Umlaute

Verfasst: Montag 6. September 2021, 07:26
von smaligardezi
data_file = open('intents.json').read()
intents = json.loads(data_file)
Intents hat deutsche Umlaute und diese werden in meinem Chatbot nicht korrekt angezeigt.
Ich Danke für die Hilfe.

Re: JSON Umlaute

Verfasst: Montag 6. September 2021, 08:04
von Sirius3
@smaligardezi: bitte mach für ein neues Thema einen neuen Thread auf.
Es handelt sich wahrscheinlich um ein Problem Deines Chatbots und nicht um ein JSON-Problem. Daher brauchen wir auch mehr Informationen und Code über Deinen Chatbot.

Dateien müssen auch wieder geschlossen werden, am besten mit Hilfe des with-Statements. Json-Dateien am besten binär öffnen, dann kümmert sich json um das Encoding. `load` statt `loads` benutzen:

Code: Alles auswählen

with open('intents.json', 'rb') as file:
    intents = json.load(file)

Re: JSON Umlaute

Verfasst: Dienstag 14. September 2021, 19:24
von smaligardezi
ok, Danke

Re: JSON Umlaute

Verfasst: Dienstag 14. September 2021, 19:52
von smaligardezi
Das hat damit geklappt , ich bin sehr sehr echt Dankbar , nur zum lernen was ist 'rb' ?

Re: JSON Umlaute

Verfasst: Dienstag 14. September 2021, 20:20
von __deets__
Hast du mal in die Dokumentation von Open geschaut, um dir dieses frage vielleicht selbst zu beantworten?

Re: JSON Umlaute

Verfasst: Dienstag 14. September 2021, 21:51
von snafu
rb steht für "richtig beeindruckend". In diesem Modus erhält open() gewisse Spezialfähigkeiten. 😇

Sollte natürlich ein Scherz sein. Lies die Doku auf der Python-Webseite oder befrage deine Suchmaschine.