[Python-de] Unicode-Chaos im Tkinter Text-widget???

M.-A. Lemburg mal at lemburg.com
Fri Apr 20 17:36:11 EDT 2001


CCF.Herzog at gmx.net wrote:
> 
> Hallo,
> das Problem scheint nach meinem jetzigen Wissensstandwie folgt
> zu liegen und womöglich ein übler Bug zu sein; da ich leider nur
> Windows 2000 auf dem Rechner habe, kann ich nur davon
> sprechen:
> Eingaben von der Tastatur in das Text-widget von Tkinter, die
> Zeichen im ANSI-Bereich > 128 betreffen, also die Umlaute auf der
> deutschen Tastatur, oder Eingaben der Art ALT+Numernblock 0xxx
> quittiert das Text-widget von Tkinter grundsätzlich damit, dass es
> diese intern als Latin-1 codiert.
> Liegt intern bereits Text im Unicode-Format vor, dann wird dieser in
> eine Doppelbyte-Codierung (vermutlich utf-8) umgewandelt, das
> betrifft aber NICHT DIE ÜBER DIE TASTATUR EINGEGEBENEN
> ZEICHEN > 128. Der resultierende Python-Typ im Text-widget
> wandelt sich dabei von unicode nach string, allerdings liegt nun de
> facto ein Mischtyp vor, teils in Doppelbyte-Codierung, teils in Latin-
> 1. Ich habe nun bis jetzt keinen Weg gefunden, diese Mischung
> wieder zu "entmischen".

Das scheint ein Tk/TCL Fehler zu sein. Python schickt Unicode-Daten
als UTF-8 zum Text-Widget und liest die Daten als ASCII String.
Sollte sich in den Daten Werte aus dem nicht-ASCII-Bereich
befinden, nimmt _tkinter.c an, daß Tcl hier UTF-8 geschickt
hat. Das Resultat ist in diesem Fall Unicode... falls das Dekodieren
gelingt -- anderfalls gibt _tkinter.c die Daten einfach als String
zurück.

Soweit ich weiß benutzt Tcl Latin-1 als Fallback-Lösung für Strings,
die nicht nach UTF-8 aussehen. Wahrscheinlich kommt es dabei mehr
durcheinander als irgendjemandem lieb sein kann -- das ist aber
ein Designfehler in Tcl und nicht in Python.

Leider hilft Dir das aber auch nicht weiter... vielleicht kann
man den Widgets ja irgendwie eine bestimmte Kodierung beibiegen ?!

-- 
Marc-Andre Lemburg
______________________________________________________________________
Company & Consulting:                           http://www.egenix.com/
Python Pages:                           http://www.lemburg.com/python/



More information about the Python-de mailing list