Kategorien
bla bla bla

argh

Dummes DB-Design trifft dämlichen ASCII-rulez!-Ansatz.

In der DB der vorhergehender Version der Groupware-„Lösung“ gibt es 1. keine eindeutige ID für Benutzer, 2. nicht-eindeutige Display-Names und 3. etliche durchaus relevante Felder (created by, midofied by u.ä.) in denen wild gemischt mal der Benutzername und mal der Display-Name drin stehen. Da war ich dann erst mal am kotzen.

Im in Python geschriebenen Export-Tool muss es nun – natürlich – die Funktion geben, diese bunte Sammelsurium an Benutzer-Identifikatoren halbwegs sauber in die XML-Files reinzupacken. So weit so schlecht.

Nun kann so ein Display-Name (i.d.R. Vorname Nachname) nun Non-ASCII-Zeichen enthalten, was wohl nicht bedacht wurde, auf jeden Fall wurde dies in dem Tool nur in einem Viertel der Fälle umgesetzt (ob es nun Absicht oder Inkompetenz war *shrug*). Aber wie dem auch sei, das Zeug habe ich jetzt gefixt – kann mir nun jemand erklären, warum es in Python den ASCII-only-Ansatz gibt? UTF-8 ist recht straight forward und auch schon einige Jährchen standardisiert, selbst in Java hat ein char eine Breite von 16 Bit und spackt nicht rum, nur weil man aus einer DB UTF-8-Strings ausliest, in eine Variable packt und diese in ein XML-Konstrukt wirft.

Von renke

IT-Ratte (oder Systemadministrator), hat nen neues Spielzeug gekriegt und wird die "Genese" des Servers hier bebloggen.

21 ist nur die halbe Wahrheit.

3 Antworten auf „argh“

Willkommen in der UTF-8 Hölle namens Python 2.5 ;)
In Python 3 ist das ein für alle mal Vergangenheit, in den Versionen davor ist es ein kleiner Kampf. Es gibt aber einige nette Zusammenfassungen zu dem Thema im Netz, wie zum Beispiel http://lobstertech.com/2009/jun/07/python_unicode_tutorial/ oder http://evanjones.ca/python-utf8.html
Im Großen und Ganzen ist das Problem gut zu beherrschen, aber auch bei mir – als eingefleischter Python Fan – hat es schon zu leicht erhöhtem Blutdruck geführt.

weitaus mehr als UTF-Support in Python würde ich ja begrüßen, wenn mir endlich mal ein Programmierer ein Tool geben würde, dass einfach das tut, was es soll :)

erwähnte ich schon mal, dass ich weder coden kann noch will?

Python unterstützt doch schon ziemlich lange Unicode-Strings. Zwar muss man die gezielt mit u“Ein String“ einsetzen, aber wenn man konsequent mit Unicode-Strings arbeitet, hat auch Python 2.5 mit den besten Unicode-Support den ich kenne. Auf jeden Fall weit weg von ASCII-only :)

Allerdings kann dieser ganze Zeichensatz-Blödsinn ziemlich schnell in viel Ärger ausarten, selbst in den Sprachen mit guter Unicode-Unterstützung.

Kommentare sind geschlossen.