|
"Fremde Zeichen" - Unicode umwandeln (VB6)Das Problem ist schnell erklärt: Ein Sprachlernprogramm sollte sowohl deutsche, wie auch polnische Zeichen anzeigen. Die Sprachsourcen werden hierbei in einer Datenbank gespeichert. Für die Produktion dieser Datenbanken war es hilfreich, auf Access 2000 und Unicode umzusteigen. Leider ist aber VB (6.0) noch nicht so weit, dass Unicodes in den Label- und Textboxen vernünftig verarbeitet werden kann. Die polnischen Textteile werden mit der Codepage für mitteleuropäische Sprachen angezeigt, die deutschen mit der für westeuropäische. Nun stellt sich aber das Problem, dass VB die polnischen Unicode Zeichen so umgesetzt, dass völlig andere Zeichen angezeigt werden. Richtige polnische Zeichen erscheinen nur, wenn in der Datenbank genau diese falschen Zeichen enthalten sind, die man erhält, wenn man die polnischen Texte mit der westeuropäischen Codepage anzeigt. :-?
Die Funktion StrConv(string, vbUnicode) liefert einen zunächst etwas merkwürdig aussehenden String: jedes zweite Zeichen scheint ein d a z w i s c h e ngeschobener blank zu sein. Bei genauerem Hinsehen mit Asc() wird aber schnell klar, dass dort der Schlüssel zum Erfolg liegt. :-!) Der Code dieser Zeichen ist nämlich entweder =0, wenn es sich um ein normales Zeichen handelt und <>0, wenn es ein spezielles Unicode Zeichen aus dem polnischen Zeichensatz ist.
Also "von hinten durch die Brust ins Auge": Private Function DoStringChangeCodes_d_pl(sSrc As String) As String
Dim i As Integer
Dim b1 As Variant, b2 As Variant
Dim n1, n2
Dim sX As String
Dim sNeu As String
sNeu = ""
sX = StrConv(sSrc, vbUnicode)
Else ' What is that???
MsgBox "Unerwartetes Zeichen!" & Chr(13) & _
"Code: " & n1 & "." & n2, vbCritical, "Ooops - ???"
End If
Next i
DoStringChangeCodes_d_pl = sNeu
End Function
Diese Funktion ersetzt nun nach Abschluss der DB-Produktion alle polnischen Unicode Zeichen auf der Datenbank.
|