[Python-de] XML, Umlaute, Unicode, Projektorganisation, RPC, MPUC - Wer bietet mehr?

Martin v. Löwis martin at v.loewis.de
Mit Jul 23 20:37:17 EDT 2003


Gerson.Kurz at t-online.de (Gerson Kurz) writes:

> 1) Es gibt ein Minipapier von mir zum Thema: XML, Umlaute und Python.
> 
> http://p-nand-q.com/python/umlaute_in_xml.html
> 
> Kommentare willkommen.

Ein paars gesammelte Kommentare, von oben nach unten:

"Grundsätzlich gibt es zwei Möglichkeiten"

Tatsächlich gibt es drei: "Umlaute können über Zeichenreferenzen
(character references) angesprochen werden"

"Die XML-Datei kann in UNICODE verfasst sein"

Schwierig. Je nach Standpunkt ist jede XML entweder stets "in UNICODE
verfasst" oder nie:
- Alle XML-Dateien sind Unicode: 

http://www.w3.org/TR/REC-xml#charsets

  "Legal characters are tab, carriage return, line feed, and the legal
  characters of Unicode and ISO/IEC 10646."
  Also besteht jede XML-Datei ausschließlich aus Unicode-Zeichen

- Keine Datei ist Unicode:
  XML liegt üblicherweise als Bytefolge in einem Encoding vor.
  Das kann us-ascii, iso-8859-1 oder utf-8 sein - in jedem Fall
  handelt es sich um eine Bytefolge, nicht um Zeichen.

"Offenbar kommt die aktuelle Pythonversion (2.2.2) nicht mit dem BOM
zurecht. Für Python 2.3 ist eine Lösung vorgesehen: der Einsatz eines
Encodings."

Wenn der Editor ein BOM mit abspeichert, braucht man in 2.3 nichts
weiter zu tun.

In Python 2.3 kann man auch einfach ein Unicode-Literal angeben,
das man dann in den codecs.open-Stream schreibt.

"Aber, leider leider, es gibt ein Problem:"

In Python 2.3 sollte dieses Problem verschwunden sein: Sofern man in
ein Terminal ausgibt, gelingt das in den allermeisten Fällen
(Voraussetzung: Python erkennt, welchen Zeichensatz das
Terminalfenster verwendet, und der Unicode-String verwendet nur
Zeichen aus diesem Zeichensatz)

> - Wann ist der Einsatz von Modulen angezeigt?

Ich weiß nur, wie man es *nicht* machen soll: Eine Klasse pro Datei
(java-isch) halte ich für schlechten Stil.

> - Werden die Module in lib\site-packages gepackt, oder in das
> Projektverzeichnis?

Zunächst im Projektverzeichnis. Dann gibt es ein setup.py, und das
installiert alles nach lib/site-python.

> - Welches Versionskontrollesystem bietet sich (unter Windows, beim
> SciTE) an?

Auf einer Maschine oder auf mehreren? Am einfachsten in Betrieb zu
nehmen ist vermutlich CVS; auf mehreren Maschinen kommt dann noch ssh
dazu.

> a) standardisiertes Protokoll (z.B. XMLRPC, Seife), mit Einsatz
> entsprechender 3rd Party Libs in C++ und Python. (Lizenzfragen??? GPL darf
> ich nicht benutzen). In diesem Fall spricht Python mit C++ über Sockets.

Meine Empfehlung: CORBA. Fnorb für Python; omniORB für C++.

Ciao,
Martin