Ich habe diese Frage als eine von mehreren in meinem letzten Post eingefügt, habe jetzt aber noch ein bißchen rumprobiert und Frage hier noch mal explizit:
Wenn ich mit "dumpdata" eine Tabelle speichere, muss ich sie vor dem "loaddata" in UTF- kodieren - oder nicht?
Dabei gehen die Umlaute verlustig. Die kann man allerdings mit suchen und ersetzen wiederherstellen. Das anschließende "loaddata" funktioniert dann.
... geht das auch einfacher?
UTF-8 mit Umlauten bei loaddata
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Weil mir Django beim Versuch dies ohne Konvertierung zu machen einen Fehler angezeigt hat (das war irgendwas mit UTF-8). Darufhin habe ich das gegoogelt und einen entsprechenden Hinweis bekommen. Nach der Kodierung hat es mit loaddata geklappt. Ich probiere das nochmal:
Code: Alles auswählen
PS D:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)> python manage.py dumpdata core.sachaufgabe --indent 2 > sachaufgabe.json
PS D:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)> python manage.py loaddata sachaufgabe.json
Traceback (most recent call last):
File "D:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)\manage.py", line 22, in <module>
main()
File "D:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)\manage.py", line 18, in main
execute_from_command_line(sys.argv)
File "C:\Users\Pit\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\__init__.py", line 425, in execute_from_command_line
utility.execute()
File "C:\Users\Pit\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\__init__.py", line 419, in execute
self.fetch_command(subcommand).run_from_argv(self.argv)
File "C:\Users\Pit\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py", line 373, in run_from_argv
self.execute(*args, **cmd_options)
File "C:\Users\Pit\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\base.py", line 417, in execute
output = self.handle(*args, **options)
File "C:\Users\Pit\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\commands\loaddata.py", line 78, in handle
self.loaddata(fixture_labels)
File "C:\Users\Pit\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\commands\loaddata.py", line 138, in loaddata
self.load_label(fixture_label)
File "C:\Users\Pit\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\management\commands\loaddata.py", line 214, in load_label
for obj in objects:
File "C:\Users\Pit\AppData\Local\Programs\Python\Python310\lib\site-packages\django\core\serializers\json.py", line 67, in Deserializer
stream_or_string = stream_or_string.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
PS D:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)>
Hmmm, welches Encoding hat denn die Datei, die geschrieben wird?
Vielleicht wird da der Systemstandard verwendet. Wenn dem so ist, kannst du Python anweisen UTF-8 anstatt des Systemstandards zu verwenden.
Vielleicht wird da der Systemstandard verwendet. Wenn dem so ist, kannst du Python anweisen UTF-8 anstatt des Systemstandards zu verwenden.
Code: Alles auswählen
python -Xutf8 manage.py dumpdata core.sachaufgabe --indent 2 > sachaufgabe.json
Die Datei ist wahrscheinlich als UTF-16 Little Endian kodiert (Default-Encoding unter Windows) und das 0xFF ist dann das erste Stück des Byte-Order-Mark. Das Problem ist dem Django-Team bekannt und die empfohlene Lösung scheint wohl zu sein, dass du dein Windows auf utf8 umstellen sollst. Ich weiß aber nicht, ob das nicht irgendwelche Seiteneffekte hat. dumpdata bietet auch andere Serialisierungsformate an, zum Beispiel xml und yaml, die man über den Parameter --format anfordern kann: https://docs.djangoproject.com/en/4.1/t ... on-formats Daher würde ich erst einmal das versuchen.
EDIT: Siehe auch (letzter Punkt): https://docs.djangoproject.com/en/4.1/h ... n-pitfalls
EDIT: Siehe auch (letzter Punkt): https://docs.djangoproject.com/en/4.1/h ... n-pitfalls
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
... wäre schön gewesen:sparrow hat geschrieben: ↑Samstag 4. März 2023, 19:27Code: Alles auswählen
python -Xutf8 manage.py dumpdata core.sachaufgabe --indent 2 > sachaufgabe.json
Code: Alles auswählen
PS D:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)> python -Xutf8 manage.py dumpdata core.sachaufgabe --indent 2 > sachaufgabe.json
PS D:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)> python manage.py loaddata sachaufgabe.json
Traceback (most recent call last):
File "D:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)\manage.py", line 22, in <module>
main()
...
stream_or_string = stream_or_string.decode()
UnicodeDecodeError: 'utf-8' codec can't decode byte 0xff in position 0: invalid start byte
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Ich habe den Hinweis mal ausprobiert und das hier umgestellt:nezzcarth hat geschrieben: ↑Samstag 4. März 2023, 19:31 EDIT: Siehe auch (letzter Punkt): https://docs.djangoproject.com/en/4.1/h ... n-pitfalls

... das hat auch nicht geholfen. Jetzt rödelt der Computer aber beim einen und anderen - ich hoffe, da sind nicht grundlegende Dinge umgestellt.
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Doch, leider:

PS.: Nach meiner Windows UTF-8 Aktion, funktioniert einiges nicht mehr wie gewohnt. Windows wollte wieder mal dies und das einrichten und auch einige der Grundeinstellungen von VisualStudioCode sind weg. Auch nachdem ich das rückgängig gemacht habe - ich hoffe, da warten nicht noch größere Überraschungen.
Das ist json und kein XML.
Ich bin unterwegs und kann es nicht testen, aber nezzcarth hat oben geschrieben, dass es der Parameter --format ist. Gast du den verwendet?
Ich bin unterwegs und kann es nicht testen, aber nezzcarth hat oben geschrieben, dass es der Parameter --format ist. Gast du den verwendet?
Code: Alles auswählen
python manage.py dumpdata core.sachaufgabe --format xml > sachaufgabe.xml
So etwas hatte ich befürchtet und daher auch darauf hingewiesen, dass man erst eine andere Lösung versuchen sollte. Der XML-Export funktioniert bei mir so, wie sparrow es beschrieben hat. Ansonsten wird auf der verlinkten Seite des Django-Teams ja noch die Umgebungsvariable PYTHONUTF8 erwähnt, die man ab Python 3.7 auf 1 setzen kann und die du in der Powershell setzen kannst. Da ich selbst kein Windowssystem greifbar habe, kann ich es selbst nicht ausprobieren.Pitwheazle hat geschrieben: ↑Sonntag 5. März 2023, 12:48 PS.: Nach meiner Windows UTF-8 Aktion, funktioniert einiges nicht mehr wie gewohnt. Windows wollte wieder mal dies und das einrichten und auch einige der Grundeinstellungen von VisualStudioCode sind weg. Auch nachdem ich das rückgängig gemacht habe - ich hoffe, da warten nicht noch größere Überraschungen.
Fazit: Nicht jeder Tipp aus dem Internet ist sinnvoll.Pitwheazle hat geschrieben: ↑Sonntag 5. März 2023, 12:48 PS.: Nach meiner Windows UTF-8 Aktion, funktioniert einiges nicht mehr wie gewohnt. Windows wollte wieder mal dies und das einrichten und auch einige der Grundeinstellungen von VisualStudioCode sind weg. Auch nachdem ich das rückgängig gemacht habe - ich hoffe, da warten nicht noch größere Überraschungen.

Die systemweiten Sprach- und Kodierungseinstellungen legt man bei der Installation des Betriebssystems fest. Danach würde ich davon die Finger lassen. Solche Probleme löst man in aller Regel über Umgebungsvariablen, da man auch speziell für das Skript definieren kann, um es nicht systemweit machen zu müssen. Hattest du es schon mit PYTHONIOENCODING probiert?
Bitte beachte, dass bereits geschriebene Daten trotzdem "kaputt" sein können. Die müsstest du dann nochmal neu schreiben lassen mit den geänderten Einstellungen oder dich etwas eingehender mit den benötigten Konvertierungen via encode() / decode() beschäftigen. Und an der Stelle vielleicht noch der obligatorische Hinweis, dass beim direkten Zugriff via open() natürlich immer der ``encoding``-Parameter genutzt werden sollte, eben damit man sicher sein kann, in welcher Kodierung die Daten geschrieben wurde. Ebenso lassen sich die meisten Editoren bzw. Entwicklungsumgebungen in deren Einstellungen anweisen, immer UTF-8 zu verwenden.
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
@ nezzcarth und @sparrow: Da bin ich auch wieder dran:
PS C:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)> python manage.py dumpdata core.sachaufgabe --format xml > sachaufgabe.xml
CommandError: Unable to serialize database: 'charmap' codec can't encode character '\u2259' in position 9: character maps to <undefined>
... muss ich doch händisch ersetzen?
Das mag mein Entspricht Zeichen nicht:sparrow hat geschrieben: ↑Sonntag 5. März 2023, 13:47 Das ist json und kein XML.
Ich bin unterwegs und kann es nicht testen, aber nezzcarth hat oben geschrieben, dass es der Parameter --format ist. Hast du den verwendet?Code: Alles auswählen
python manage.py dumpdata core.sachaufgabe --format xml > sachaufgabe.xml
PS C:\Dropbox\RechentrainerWeb\rechentrainer_Kopie(1)> python manage.py dumpdata core.sachaufgabe --format xml > sachaufgabe.xml
CommandError: Unable to serialize database: 'charmap' codec can't encode character '\u2259' in position 9: character maps to <undefined>
... muss ich doch händisch ersetzen?
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Langsam müsste ich meine Sachaufgben mal hochladen. Ich habe nochmals die obigen Vorschläge durchprobiert, der Fehler mit dem entspricht Zeichen wird nicht mehr angezeigt (es ist aber auch keines drin).
erzeugt:
erzeugt:
und
sieht so ähnlich aus (aber nicht genauso):
habt ihr noch eine andere Idee?
Code: Alles auswählen
python manage.py dumpdata core.sachaufgabe --format xml > sachaufgabe.xml
Code: Alles auswählen
<?xml version="1.0" encoding="utf-8"?>
<django-objects version="1.0"><object model="core.sachaufgabe" pk="1"><field name="lfd_nr" type="SmallIntegerField">7</field><field name="ab_jg" type="SmallIntegerField">4</field><field name="text" type="TextField">{a[0]} hat {e}Ç gespart. {a[1]} m÷chte sich {d[0]} kaufen, {d[1]} {f}Ç kostet. Wie viel Geld fehlt {a[2]} noch?</field><field name="variable" type="JSONField">{"a": [["Julia", "Sie", "ihr"], ["Sophie", "Sie", "ihr"], ["Maria", "Sie", "ihr"], ["Paul", "Er", "ihm"]], "d": [["einen neuen Pullover", "der"], ["eine neue Tasche", "die"]], "e": [10, 15, 20], "f": [25, 28, 30]}</field><field name="loesung" type="CharField">{f}-{e}={}</field><field name="pro_text" type="CharField">Pulloverkauf:</field><field name="anmerkung" type="CharField"><None></None></field><field name="links_text" type="CharField">Es fehlen</field><field name="rechts_text" type="CharField">Ç</field></....
Code: Alles auswählen
python manage.py dumpdata core.sachaufgabe --indent 2 > sachaufgabe.json
Code: Alles auswählen
[
{
"model": "core.sachaufgabe",
"pk": 1,
"fields": {
"lfd_nr": 7,
"ab_jg": 4,
"text": "{a[0]} hat {e}Ç gespart. {a[1]} m÷chte sich {d[0]} kaufen, {d[1]} {f}Ç kostet. Wie viel Geld fehlt {a[2]} noch?",
"variable": {
"a": [
[
"Julia",
"Sie",
"ihr"
],
[
"Sophie",
"Sie",
"ihr"
],
[
"Maria",
"Sie",
"ihr"
],
[
"Paul",
"Er",
"ihm"
]
],
"d": [
[
"einen neuen Pullover",
"der"
],
[
"eine neue Tasche",
"die"
]
],
"e": [
10,
15,
20
],
"f": [
25,
28,
30
]
},
"loesung": "{f}-{e}={}",
"pro_text": "Pulloverkauf:",
"anmerkung": null,
"links_text": "Es fehlen",
"rechts_text": "Ç"
}
},...
Code: Alles auswählen
python -Xutf8 manage.py dumpdata core.sachaufgabe --indent 2 > sachaufgabe.json
Code: Alles auswählen
[
{
"model": "core.sachaufgabe",
"pk": 1,
"fields": {
"lfd_nr": 7,
"ab_jg": 4,
"text": "{a[0]} hat {e}Ôé¼ gespart. {a[1]} m├Âchte sich {d[0]} kaufen, {d[1]} {f}Ôé¼ kostet. Wie viel Geld fehlt {a[2]} noch?",
"variable": {
"a": [
[
"Julia",
"Sie",
"ihr"
],
[
"Sophie",
"Sie",
"ihr"
],
[
"Maria",
"Sie",
"ihr"
],
[
"Paul",
"Er",
"ihm"
]
],
"d": [
[
"einen neuen Pullover",
"der"
],
[
"eine neue Tasche",
"die"
]
],
"e": [
10,
15,
20
],
"f": [
25,
28,
30
]
},
"loesung": "{f}-{e}={}",
"pro_text": "Pulloverkauf:",
"anmerkung": null,
"links_text": "Es fehlen",
"rechts_text": "Ôé¼"
}
},...
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Welche, die erste oder die zweite?
Kann man per PN auch Dateianhänge verschicken oder muss ich das ganze in das Nachrichtenfeld kopieren?
Kann man per PN auch Dateianhänge verschicken oder muss ich das ganze in das Nachrichtenfeld kopieren?
-
- User
- Beiträge: 1050
- Registriert: Sonntag 19. September 2021, 09:40
Was mache ich verkehrt. Im Notepad++ sieht es bei mir so aus:

und

möglicherweise reden wir aneinander vorbei. Die Codierung konnte ich auch früher schon mit notepad++ umwandeln. Mein Problem sind die Umlaute usw. die ich alle händisch umwandeln muss.

und

möglicherweise reden wir aneinander vorbei. Die Codierung konnte ich auch früher schon mit notepad++ umwandeln. Mein Problem sind die Umlaute usw. die ich alle händisch umwandeln muss.