Fast schon in historische Vergessenheit versunken ist der
erweiterte 8-Bit-ASCII-Zeichensatz. Der unter MS-DOS eingesetzte
Zeichensatz verwendet ab dem Zeichencode 128 eine andere Belegung
als der unter Windows gebräuchliche ANSI-Zeichensatz. Dies werden
Sie vor allem bemerken, wenn Sie von einer MS-DOS-Anwendung
erstellte (unformatierte) Texte in einem Windows-Programm
darstellen, oder sich umgekehrt z.B. mit dem Windows-Editor
(Notepad) erstellte Texte unter MS-DOS ansehen.
Zur Konvertierung zwischen beiden Zeichensätzen bietet das
Windows-API die beiden Funktionen CharToOem
und OemToChar
an. Hierbei entspricht "Oem" dem ASCII-Zeichensatz und
"Char" (wie selbstverständlich...) dem
Windows-ANSI-Zeichensatz. Bei beiden Funktionen wird im ersten
Parameter der zu konvertierende String übergeben und das Ergebnis
im zweiten Parameter zurückgegeben. Da die Konvertierung der
Zeichen 1:1 erfolgt (die Anzahl der Zeichen der Strings bleibt
unverändert), können Sie ein und denselben String sowohl zur
Übergabe als auch für das Ergebnis verwenden. Anderenfalls müssen
Sie einen gleich langen leeren String als Rückgabeparameter
verwenden, wenn Sie den Ausgangsstring unverändert weiter verwenden
wollen.
Die beiden Hilfsfunktionen ASCIItoANSI und ANSItoASCII
vereinfachen die Aufrufe der API-Funktionen etwas und bieten das
gewohnte Funktions-"Feeling". Sie übergeben den zu
konvertierenden String und erhalten einen neuen als Rückgabewert,
den Sie natürlich wieder dem gleichen String zuweisen können.
Private Declare Sub OemToChar Lib "user32" Alias "OemToCharA" _
(ByVal StrFrom As String, ByVal StrTo As String)
Private Declare Sub CharToOem Lib "user32" Alias "CharToOemA" _
(ByVal StrFrom As String, ByVal StrTo As String)
Public Function ASCIItoANSI(ByVal AsciiString As String) _
As String
OemToChar AsciiString, AsciiString
ASCIItoANSI = AsciiString
End Function
Public Function ANSItoASCII(ByVal AnsiString As String) _
As String
CharToOem AnsiString, AnsiString
ANSItoASCII = AnsiString
End Function
 |
Mit den Funktionen ASCIItoANSI und
ANSItoASCII konvertieren Sie einen String von einem
Zeichensatz in den anderen

|
Verwendung bei separatem Ausgangs- und Zielstring:
Dim Quelle As String
Dim Ziel As String
Quelle = "Ärger ist öfter üblich"
Ziel = ANSItoASCII(Quelle)
Verwendung bei gleichem Ausgangs- und Zielstring:
Dim Text As String
Text = "Ärger ist öfter üblich"
Text = ANSItoASCII(Text)

|