Hallo,
ich habe momentan ein Problem mit dem Zeichensatz in Python. Bei einigen Funktionsaufrufen kommt es zu der Fehlermeldung "UnicodeError: ASCII decoding error: ordinal not in rang(128).
Bisher ersetzte ich die ASCII-Zeichen > 127 durch ein bekanntes Zeichen (?). Da dies aber nur eine Krücke ist, wollte ich den Zeichensatz ändern. Da ich dies aber noch nicht hinbekommen habe, meine Frage. Wie kann ich Zeichen > 127 in Funktionen bearbeiten? Meine aufzurufende Funktion ist "*.toxml". Kann man die Codierung angeben?
Unicode ordinal not in range (128)
-
- User
- Beiträge: 728
- Registriert: Sonntag 22. September 2002, 08:32
- Wohnort: Sauerland
- Kontaktdaten:
Ich trage hier die Antwort von fs111 aus dem gesperrten Thread nach, damit es die Nachwelt einfacher hat
fs111 schrieb
Vermutlich arbeitest Du mit XML-Dateien, dann solltest Du in der Deklaration von xml den Zeichensatz explizit auf iso-8859-1(5) umstellen, dann sollte das nicht mehr passieren. Hatte ich auch schon mal das Problem und bin halb wahnsinnig geworden. Nach der Umstellung ging es völlig problemlos.
HTH
Grüße fs111
Kann man denn mit PHPBB keine Threads verschieben?
fs111
fs111
Hi. Ja, du kannst Threads verschieben, aber keine einzelnen Beiträge (ist zumindest für mich nicht möglich)...
@MaVoj: Ja, wie es Hans schreibt, wäre es ganz nützlich zu wissen woher die Strings kommen und wie sie bearbeitet werden sollen. So kann ich dir leider auch nicht helfen...
Milan
@MaVoj: Ja, wie es Hans schreibt, wäre es ganz nützlich zu wissen woher die Strings kommen und wie sie bearbeitet werden sollen. So kann ich dir leider auch nicht helfen...
Milan
Ich fülle ein "dom_main" (createElement; createTextNode) und erhalte den Fehler beim Aufruf von "strxml = str(dom_main.toxml())". dom_main.createTextNode(Info) übergeben ich den Wert mit den Sonderzeichen!
Hast Du meinen Tipp ausprobiert?
fs111
fs111
Code: Alles auswählen
<?xml version="1.0" encoding="ISO-8859-1"?>
fs111
Ich glaube das muss groß sein, teste es einfach mal.
fs111
fs111
Hmm, welche XML-Implementierung benutzt Du denn?
fs111
fs111
Aus der 'minidom.py' die Funktion 'toxml' und von dort widerum 'writexml'. In diesem 'minidom.writexml' steht der Eintrag 'writer.write('<?xml version="1.0" ?>\n')'. Sollte ich diesen mal durch '<?xml version="1.0" encoding="ISO-8859-1"?>' ersetzen?
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
Hi MaVoj,
damit sollte es laufen, ich würde aber bei xml immer mit Unicode arbeiten und im Programm dann die Bildschirmausgaben abhängig von den Einstellungen des Rechners Codieren.
Hier noch ein interessanter Link.
http://p-nand-q.com/python/unicode_faq.html
Gruß
Dookie
damit sollte es laufen, ich würde aber bei xml immer mit Unicode arbeiten und im Programm dann die Bildschirmausgaben abhängig von den Einstellungen des Rechners Codieren.
Hier noch ein interessanter Link.
http://p-nand-q.com/python/unicode_faq.html
Gruß
Dookie
Das ist ja löblich immer mit Unicode arbeiten zu wollen, damit fliegt man aber bei XMl schnell auf die Nase, wie wir hier ja sehen können.Dookie hat geschrieben:Hi MaVoj,
damit sollte es laufen, ich würde aber bei xml immer mit Unicode arbeiten und im Programm dann die Bildschirmausgaben abhängig von den Einstellungen des Rechners Codieren.
Hier noch ein interessanter Link.
http://p-nand-q.com/python/unicode_faq.html
Gruß
Dookie
fs111
Ich möchte ungern die Original Bibliothek abändern, da ich nach Neuinstallationen diese wieder nachpflegen müßte. Wie kann ich denn die minidom.py (aus meinem Arbeitsverzeichnis) in meine Dateieinbinden ohne dass stets auf das Installationsverzeichnis (..\Python\Lib\xml\dom) zugegriffen wird? Kann ich beim Import den Pfad angegeben? Wie wird 'minidom' überhaupt eingebunden. Selbst wenn ich 'from xml.dom.minidom import Document, parseString, parse' lösche, kann ich mit 'dom_main' auf 'toxml' zugreifen!
Kann man denn den minidom im Konstruktor nicht das encoding übergeben? Das kann ich mir ja fast nicht vorstellen...
fs111
fs111
-
- Python-Forum Veteran
- Beiträge: 2010
- Registriert: Freitag 11. Oktober 2002, 18:00
- Wohnort: Salzburg
- Kontaktdaten:
hi fs111,
eben nicht, Unicode ist bei xml standart, wenn kein anderes encoding angegeben wird in der ersten Zeile, und dann liegts am Programm/Parser das Encoding auszuwerten.
Gruß
Dookie
eben nicht, Unicode ist bei xml standart, wenn kein anderes encoding angegeben wird in der ersten Zeile, und dann liegts am Programm/Parser das Encoding auszuwerten.
Gruß
Dookie
das weiß ich auch, nur wenn Dein System kein Unicode als Standardzeichensatz hat, sondern bspw. Iso-8859-15, dann kommt es zu solchen Fehlern, wie wir hier sehen. Das habe ich schon öfter beobachtet, und zwar sowohl unter Python als auch unter Java.Dookie hat geschrieben:hi fs111,
eben nicht, Unicode ist bei xml standart, wenn kein anderes encoding angegeben wird in der ersten Zeile, und dann liegts am Programm/Parser das Encoding auszuwerten.
Gruß
Dookie
fs111