Französische Buchstaben

28/01/2008 - 16:13 von Wolfgang Badura | Report spam
Hallo alle zusammen!
Ich habe ein kleines Programm verfaßt, mit dem ich CD-Track-Bezeichnungen
von der CDDB http://freedb.freedb.org auswerte.
Dabei erhalte ich auch Trackbeschreibungen in französischer Sprache.
Dem Sinn der Antwort kann ich entnehmen, dass beispielsweise die Kombination
der Zeichen "é" dem Zeichen é entspricht, "ê" dem ê.
Auch in französischsprachigen Mails aus der Schweiz enthalten Nachrichten
solche Zeichenkombinationen.
Gibt es eine Tabelle, wie solche 2-Bytes-Kombinationen in den Klartext zu
übersetzen sind?
Oder gibt es eine ganz andere Lösung, wie zB. Einstellungen beim
Mailempfang, oder bei Serverantworten.
Der Header von freedb.freedb.org zB. enthàlt als Codierungshinweis
"Content-Type: text/plain; charset=UTF-8"
Mit bestem Dank im Voraus
Wolfgang
 

Lesen sie die antworten

#1 Thorsten Albers
28/01/2008 - 17:48 | Warnen spam
Wolfgang Badura schrieb im Beitrag
<479df112$0$13341$...
Hallo alle zusammen!
Ich habe ein kleines Programm verfaßt, mit dem ich CD-Track-Bezeichnungen

von der CDDB http://freedb.freedb.org auswerte.
Dabei erhalte ich auch Trackbeschreibungen in französischer Sprache.
Dem Sinn der Antwort kann ich entnehmen, dass beispielsweise die


Kombination
der Zeichen "é" dem Zeichen é entspricht, "ê" dem ê.
Auch in französischsprachigen Mails aus der Schweiz enthalten Nachrichten

solche Zeichenkombinationen.
Gibt es eine Tabelle, wie solche 2-Bytes-Kombinationen in den Klartext zu

übersetzen sind?
Oder gibt es eine ganz andere Lösung, wie zB. Einstellungen beim
Mailempfang, oder bei Serverantworten.
Der Header von freedb.freedb.org zB. enthàlt als Codierungshinweis
"Content-Type: text/plain; charset=UTF-8"



Wie der Kodierungshinweis sagt, sind die Texte in UTF-8 kodiert. Spàtestens
ab Windows 2K kannst Du die Windows-API-Funktion MultiByteToWideChar() mit
CP_UTF8 für 'CodePage' verwenden, um die Texte aus UTF-8 in UTF-16 zu
konvertieren. UTF-16 ist die Kodierung, die von VB-Strings verwendet wird.
Unter Windows 9x steht CP_UTF8 meines Wissens nicht zur Verfügung, dort
mußt Du eine eigene Konvertierung implementieren.

Schematisch (nicht getestet):

Private Declare Function MultiByteToWideChar _
Lib "kernel32" _
( _
ByVal lCodePage As Long, _
ByVal lFlags As Long, _
pMultiByteStr As Any, ByVal lMultiByteStrLen As
Long, _
pWideCharStr As Any, ByVal lWideCharStrLen As
Long _
) As Long

If Len(sFreeDBString) = 0 Then
sString = vbNullString
Else
Err.Clear
lCharCount = MultiByteToWideChar(CP_UTF8, 0, _
sFreeDBString, Len(sFreeDBString), _
ByVal 0&, 0)
If lCharCount Then
sString = String$(vbNullChar, lCharCount)
lCharCount = MultiByteToWideChar(CP_UTF8, 0, _
sFreeDBString, Len(sFreeDBString), _
ByVal StrPtr(sString), Len(sString))
If lCharCount = 0 Then
Debug.Print Err.LastDLLError ' Fehler
End If
Else If Err.LastDLLError Then
Debug.Print Err.LastDLLError ' Fehler
Else
sString = vbNullString
End If
End If

-
THORSTEN ALBERS Universitàt Freiburg
albers@
uni-freiburg.de
-

Ähnliche fragen