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

Martin v. Loewis martin at loewis.home.cs.tu-berlin.de
Fri Apr 20 23:58:48 EDT 2001


> Ich kenne mich leider mit den ganzen codecs- Sachen, unicode
> etc. nun überhaupt nicht aus, aber es kommt mir doch so vor, als sei
> das eigentlich so nicht vorgesehen.

Den Eindruck habe ich auch.

> Der einzige Workaround, der mir einfällt, ist, grundsätzlich alle
> Tastatureingaben über das Key-down-event abzufangen und dafür zu
> sorgen, dass immer unicode vorliegt.

Das ist nicht unbedingt der einzige Work-around. Wenn Du weisst, dass
es sich um ein gemischtes-UTF-8-CP-1252-Problem handeln muss, empfehle
ich folgende Funktion:

def tclutf8_to_cp1252(str):
  try:
    return str.encode("cp-1252") # konvertiert Unicode-Objekte und
                                 # lässt ASCII-kodierte Bytestrings
                                 # wie sie sind
  except UnicodeError:
    return magic_tclutf8_to_cp1252(str)

def magic_tclutf8_to_cp1252(str):
  last = 0
  for i in range(1, len(str)): # finde UTF-8-Anfangsstück
    try:
      start = unicode(str[:-i],"utf-8")
      # Maximales Anfangsstück gefunden:
      badchar = str[-i]
      if i>1:
        rest = magic_tclutf8_to_cp1252(str[-i+1:])
      else:
        rest = ""
      return start.encode("cp-1252")+badchar+rest
    except UnicodeError:
      pass

Das ist gänzlich ungetestet usw., aber vielleicht hilft's.

Ciao,
Martin



More information about the Python-de mailing list