Hallo,
nachdem ich fast den ganzen Tag auf
MSDN verbracht habe, um herauszufinden, wie man einen Text in
Unicode konvertiert, von dem nur das Charset bekannt ist, bin ich auf folgende Funktion gekommen:
Delphi-Quellcode:
function ConvertText(const Text: AnsiString; Charset: Cardinal): WideString;
var
CharsetInfo: TCharsetInfo;
L: Integer;
begin
// Codepage besorgen
TranslateCharsetInfo(Charset, CharsetInfo, TCI_SRCCHARSET);
// Puffergröße ermitteln
L := MultiByteToWideChar(CharsetInfo.ciACP, MB_PRECOMPOSED,
@Text[1], Length(Text), nil, 0);
// Puffer anlegen
SetLength(Result, L);
// Konvertieren
MultiByteToWideChar(CharsetInfo.ciACP, MB_PRECOMPOSED,
@Text[1], Length(Text), @Result[1], L);
end;
Die Routine ist insbesondere dann praktisch, wenn Dateiformate gelesen werden müssn. In meinem Fall RTF. Da werden Texte gerne über Charsets definiert.
Gruß
xaromz