Einzelnen Beitrag anzeigen

xaromz

Registriert seit: 18. Mär 2005
1.682 Beiträge
 
Delphi 2006 Enterprise
 
#1

Multibyte-Text in Unicode konvertieren mit Charset

  Alt 7. Jan 2007, 15:00
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
I am a leaf on the wind - watch how I soar
  Mit Zitat antworten Zitat