Ansi-Projekte nach Unicode konvertieren
Verfasst: Montag 6. Dezember 2010, 13:09
Hallo,
Ich habe vor meine Ansi-Projekte (Packages, Module, Scripts ...) auf Unicode umzustellen.
Doch erweist sich dies meiner Meinung nach doch nicht so trivial wie anfangs gedacht. Ich denke mal, dass da auch viel Handarbeit nötig sein wird.
Meine Ziel/Wunsch dabei:
Py 2.x und wxPython betreffend:
Ich hoffe ihr könnt mir bei meinem Problem weiterhelfen und die Infos/Vorschläge/Verbesserungen können dann auch anderen zugute kommen, die vor denselben/ähnlichen Herausforderungen stehen.
Ich bin offen für Anregungen und Kritik.
Ich habe vor meine Ansi-Projekte (Packages, Module, Scripts ...) auf Unicode umzustellen.
Doch erweist sich dies meiner Meinung nach doch nicht so trivial wie anfangs gedacht. Ich denke mal, dass da auch viel Handarbeit nötig sein wird.
Meine Ziel/Wunsch dabei:
- Lauffähig in Python 2.7
- Verwendung von wxPython unicode
- Verwendung von pywin32
- Die Anpassungen (Unicode betreffend) sollen auch eine unkomplizierte zukünftige Umstellung auf Py3 ermöglichen
Py 2.x und wxPython betreffend:
- http://wiki.python.de/Unicode
- http://wiki.python.de/Von%20Umlauten%2C ... 0Encodings
- http://docs.python.org/howto/unicode.html
- http://wiki.wxpython.org/UnicodeBuild
- http://wiki.wxpython.org/Internationalization
- http://docs.python.org/release/3.0.1/wh ... e-vs-8-bit
- http://docs.python.org/py3k/howto/unico ... ht=unicode
- Alle nicht ASCII-konformen Zeichenketten innerhalb des Scripts als Unicode deklarieren (u'')
- Daten beim Import/Input nach Unicode wandeln; betroffene Operationen anpassen:
- sys.stdin.read
- file inputs
- sys.argv
- Usereingaben wie z.b. raw_input
- Daten beim Export/Output kodieren, z.B. an das Filesystem anpassen (mit sys.stdout.encoding or sys.getfilesystemencoding()); betroffene Operationen adaptieren:
- sys.stdin.write, sys.stderr.write
- file outputs
- wxPython Default-Encoding (wx.SetDefaultPyEncoding("utf-8")) setzen; für den Fall das mal eine Unicode Deklaration übersehen wurde. Das Default-Encoding muss dem Script-Encoding entsprechen.
- Sollte man str() in Unicode-Programmen überhaupt noch verwenden (beispielweise bei der Umwandlung von int -> str)? Oder am besten gleich unicode()?
- Wie steht's mit pickle? Kann man gepickelte Daten aus einer Ansi-Version problemlos mit einer Unicode-Version öffnen? Oder wird beim pickle'n das Encoding mitgespeichert?
- Ist es sinnvoll, auch in Anbetracht von Py3, alle Python-Scripts's nach UTF-8 zu konvertieren und dies dann in der Encoding line (# -*- coding: utf-8 -*-) entsprechend zu bezeichnen? Habe ich dann weniger Probleme, bzw. Aufwand bei Funktionen wie str(), format() und %-formatting?
- Wie sieht's mit _winreg aus, also dem Zugriff auf die Windows Registry? Ist es dort genauso wie bei z.B. os.listdir(), dass wenn in Unicode übergeben wird, dies auch wieder zurückkommt, etc. ?
- Bei pywin32 die Unicode-Funktionen verwenden?
Ich hoffe ihr könnt mir bei meinem Problem weiterhelfen und die Infos/Vorschläge/Verbesserungen können dann auch anderen zugute kommen, die vor denselben/ähnlichen Herausforderungen stehen.
Ich bin offen für Anregungen und Kritik.