Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Library: Algorithmen (https://www.delphipraxis.net/28-library-algorithmen/)
-   -   Delphi Multibyte-Text in Unicode konvertieren mit Charset (https://www.delphipraxis.net/83858-multibyte-text-unicode-konvertieren-mit-charset.html)

xaromz 7. Jan 2007 15:00


Multibyte-Text in Unicode konvertieren mit Charset
 
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


Alle Zeitangaben in WEZ +1. Es ist jetzt 15:34 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz