Unicode Combine

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Unicode Combine

Beitragvon name » Mittwoch 24. Januar 2007, 19:17

Hab ein kleines Problem mit Unicode, ich mag den Buchstaben self.lastfocus[-1].GetValue()[:-1] mit dem Akzent event.GetEventObject().GetLabel() verbinden, das Problem ist das er mir immer folgende Fehlermeldung ausspuckt:
File "wxinterface.py", line 94
comb = u"\N{%s}" % combining
UnicodeDecodeError: 'unicodeescape' codec can't decode bytes in position 0-5: unknown Unicode character name


Code: Alles auswählen

   def CombineChars(self, event):
      # event.GetEventObject().GetLabel() = "ˊ"
      combining = (unicodedata.name(event.GetEventObject().GetLabel())).replace("MODIFIER","COMBINING")
      comb = u"\N{%s}" % combining
      tocombine = self.lastfocus[-1].GetValue()[-1]+comb
      combined = unicodedata.normalize('NFC',tocombine)
      # wxPython stuff
      self.lastfocus[-1].SetValue("%s%s" % (
                                   self.lastfocus[-1].GetValue()[:-1],
                                   combined
                                   )
      )
      self.lastfocus[-1].SetFocus()
      self.lastfocus[-1].SetInsertionPoint(self.lastfocus[-1].GetLastPosition())

Danke fuers lesen!
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.
BlackJack

Beitragvon BlackJack » Mittwoch 24. Januar 2007, 19:55

Das klappt nicht weil Escapesequenzen in Zeichenkettenliteralen zur Übersetzungszeit ausgewertet werden. Das sind Konstanten. Und u'\N{%s}' ist falsch, weil '%s' kein Name für ein Unicode-Zeichen ist.

Du brauchst die `lookup()`-Funktion aus dem `unicodedata`-Modul. Die ist das Gegenstück zu `name()`.
Benutzeravatar
name
User
Beiträge: 254
Registriert: Dienstag 5. September 2006, 16:35
Wohnort: Wien
Kontaktdaten:

Beitragvon name » Mittwoch 24. Januar 2007, 19:56

BlackJack hat geschrieben:Das klappt nicht weil Escapesequenzen in Zeichenkettenliteralen zur Übersetzungszeit ausgewertet werden. Das sind Konstanten. Und u'\N{%s}' ist falsch, weil '%s' kein Name für ein Unicode-Zeichen ist.

Du brauchst die `lookup()`-Funktion aus dem `unicodedata`-Modul. Die ist das Gegenstück zu `name()`.
Aber das moechte ich doch net, wenn ich es hardcode muss ich es doch auch mit {FOO BAR} schreiben...
Mag mich and dieser Stelle auch mal fuer die kompetente Hilfe hier bedanken!
Ohloh | Mein Blog | Jabber: segfaulthunter@swissjabber.eu | asynchia – asynchrone Netzwerkbibliothek

In the beginning the Universe was created. This has made a lot of people very angry and has been widely regarded as a bad move.

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder