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.
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
Dookie
Python-Forum Veteran
Beiträge: 2010
Registriert: Freitag 11. Oktober 2002, 18:00
Wohnort: Salzburg
Kontaktdaten:

Hi fs111,

mein System hat ISO-8859-15, zumindest in der Konsole, bei gnome/gtk2 werden die Texte alle mit UTF-8 codiert. Gerade Python bietet ja schon bei den Stringobjekten sehr schöne Methoden zum coden und encoden von Strings an. Das Modul sys bietet die Funktion "getfilesystemencoding" Das liefert das auf dem System eingestellte Encoding der Zeichen.

Code: Alles auswählen

In [2]: sys.getfilesystemencoding()
Out[2]: 'ISO-8859-15'
Gruß

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

Hi,
leider ist die Funktion 'sys.getfilesystemencoding()' erst ab der Version 2.3 zu nutzen. Ich arbeite noch mit 2.2.2.
Um noch einmal auf meine Frage vom Freitag zurückzukommen:
MaVoj hat geschrieben: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.
Könnt icht mit da einen Tipp geben?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Ja, das was du machen willst geht. Ich würde dir jedoch davon abraten und lieber auf Python 2.3 umsteigen, da hast du den ganzen Ärger nämlich nicht. Hier kannst du nämlich optional das encoding selbst festlegen und Python amcht die Arbeit. Siehe den Docuausschnitt hier.

Falls du nicht aufrüsten kannst, weil du meinentwegen einen Server hast, der Python 2.2.2 verwendet (und du keine Root Rechte hast) würde ich einfach das komplette xml-Package aus Python 2.3 hochladen und als eigenes Modul handhaben. Damit es vom Interpreter dann gefunden wird, musst du natürlich den Path angeben. Das machst du dann so:

Code: Alles auswählen

import sys
sys.path.insert(0,"Path zu xml-package")
Dadurch, dass du den Path vor alle anderen standartmäßigen Pfade setzt, wird zuerst dein Package gefunden und nicht das, welches Python von sich aus mitbringt.

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

Hi Milan,
Milan hat geschrieben:lieber auf Python 2.3 umsteigen
wenn ich jetzt auf Python 2.3 umsteige, dann muss ich sicher aller verwendeten Module nachrüsten. Ist ansich kein Problem. Gilt dies auch für 'py2exe'? Ich verwende momentan die Version 0.3.3! Die gefällt mir serh gut, da ich als Resultat eine *.exe erhalte. Bei den Folgeversionen wird mir immernoch ein Bobliotheken.zip erstellt, dass ich aber nicht separat haben möchte. Funktioniert py2exe 0.3.3 auch mit Python 2.3?
Milan
User
Beiträge: 1078
Registriert: Mittwoch 16. Oktober 2002, 20:52

Hi. Nein, das tuts leider nicht mehr. Du kannst dir bei SF ja alle Versionen anschauen: http://sourceforge.net/project/showfile ... e_id=35995.

Außerdem kannst du ja so vorgehen, wie ich es oben beschrieben hab, dann brauchst du kein Upgrade.

Milan
Antworten