Ich habe grade mal folgendes gemacht.

Neues Projekt, neues Fenster, neues Textfield (Stefan, welches control verwendest Du? Ein "Textarray"-control gibt es nicht), folgender code im keydown event:

msgbox key.Encoding.internetName

und folgender im textchange event:

msgbox me.Text+":"+me.text.Encoding.internetName

,so dass wir nicht auf die eventuell fehlerhafte encoding-Anzeige des debuggers angewiesen sind.

Nun compiliert, und eingegeben:

bei "a": US-Ascii im keydown, aber utf-8 im textchanged event (aha!)

Text gelöscht.

bei "ü": UTF-16 im keydown, UTF8 im textchanged
dann "s" eingegeben (so dass da jetzt "üs" steht)
US-Ascii im keydown, UTF8 im textchanged.

Interessant. Bei Ascii>127 ist das encoding im keydown event utf-16, sonst us-ascii (us-ascii ist kein subset von utf-16 sondern von utf-8. Der Unterschied zwischen utf-8 und utf16 im Ascii-Bereich ist ein zusätzliches Null high byte also \x40 wird \x{0040} in utf16.)

Tja, bringt das Licht ins Dunkel?

Max


Antwort per Email an