Unicode ordinal not in range (128)

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
MaVoj
User
Beiträge: 20
Registriert: Freitag 23. Januar 2004, 12:52
Wohnort: Berlin

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?
hans
User
Beiträge: 728
Registriert: Sonntag 22. September 2002, 08:32
Wohnort: Sauerland
Kontaktdaten:

Womit arbeitest du? QT? QTStrings kannst du mit der Funktion local8bit() konvertieren.

Aber sag erst einmal, was du einsetzt, sonst raten wir hier nur unnötig rum.

Hans
hans
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
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Kann man denn mit PHPBB keine Threads verschieben?

fs111
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

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
Gast

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!
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Hast Du meinen Tipp ausprobiert?

fs111
MaVoj
User
Beiträge: 20
Registriert: Freitag 23. Januar 2004, 12:52
Wohnort: Berlin

Hi fs111,
fs111 hat geschrieben:Hast Du meinen Tipp ausprobiert?

fs111
Wo kann ich denn die "Deklaration von xml den Zeichensatz explizit auf iso-8859-1(5) umstellen"?
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Code: Alles auswählen

<?xml version="1.0" encoding="ISO-8859-1"?>
muss in der ersten Zeile des Dokumentes stehen. Wenn kein Zeichensatz angegeben wird, wird standardmäßig von UTF-8 ausgegangen, und das führt dann zu Problemen.

fs111
MaVoj
User
Beiträge: 20
Registriert: Freitag 23. Januar 2004, 12:52
Wohnort: Berlin

Danke für die Info. Diese Textzeile steht an erster Position. Allerdings habe ich "iso" klein geschrieben! Ist das ein Problem?
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Ich glaube das muss groß sein, teste es einfach mal.

fs111
MaVoj
User
Beiträge: 20
Registriert: Freitag 23. Januar 2004, 12:52
Wohnort: Berlin

Hi fs111,

hat leider auch mit der Großschreibung nicht funktioniert. Hast du eventuell noch einem Tipp auf Lager?
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Hmm, welche XML-Implementierung benutzt Du denn?

fs111
MaVoj
User
Beiträge: 20
Registriert: Freitag 23. Januar 2004, 12:52
Wohnort: Berlin

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?
Dookie
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
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

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
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.

fs111
MaVoj
User
Beiträge: 20
Registriert: Freitag 23. Januar 2004, 12:52
Wohnort: Berlin

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!
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

Kann man denn den minidom im Konstruktor nicht das encoding übergeben? Das kann ich mir ja fast nicht vorstellen...

fs111
Dookie
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
fs111
User
Beiträge: 170
Registriert: Samstag 15. November 2003, 11:42
Kontaktdaten:

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
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.

fs111
Antworten