![]() |
"ANSI" zu "Unicode", zu "Big Endian
Wie kann man "ANSI" zu "Unicode", zu "Big Endian Unicode" und zu "UTF-8" konvertieren :?:
|
Re: "ANSI" zu "Unicode", zu "Big En
Delphi-Quellcode:
Big Endian Unicode: Nur relevant wenn Datei gespeicher wird -> ElPack oder TntWare-Komponentensammlung
MyUnicodeString := MyAnsiString; // Compiler-Magic
Delphi-Quellcode:
MyUtf8String := Utf8Encode(MyUnicodeString);
|
Re: "ANSI" zu "Unicode", zu "Big En
Delphi-Quellcode:
var
wBuf: PWideChar; // unicode aBuf: PAnsiChar; // Ansi :) sText: string; begin GetMem(wBuf, MAX_PATH); GetMem(aBuf, MAX_PATH); MultiByteToWideChar(CP_UTF8, 0, aBuf, MAX_PATH, wBuf, MAX_PATH); // ansi -> utf8 //... sText := WideCharToString(wBuf); // utf8 -> string //... WideCharToMultiByte(CP_UTF8, 0, wBuf, MAX_PATH, aBuf, MAX_PATH, nil, nil); // utf8 -> ansi FreeMem(wBuf, MAX_PATH); FreeMem(aBuf, MAX_PATH); end; |
Re: "ANSI" zu "Unicode", zu "Big En
Erstens ist AllocMem besser, da es den alloziierten Speicher initialisiert und zweitens rechnen die Funktionen in Bytes, also ist GetMem(wBuf, MAX_PATH*SizeOf(WideChar)); richtig.
Letztlich kann man sich das alles sparen. Man weise einen string einem WideString zu bzw umgekehrt und Delphi wird es schon richten. Fuer Big Endian muss ein BOM vorhanden sein. Sprich das erste Zeichen des Strings sagt den Endian an. $FFFE bzw $FEFF. Utf8Encode duerfte das erledigen. |
Re: "ANSI" zu "Unicode", zu "Big En
funktionieren tuts auch so, aber du hast natürlich recht.
ich benütz dennoch GetMem lieber als AllocMem, da procedures 800% schneller als functions sind. |
Re: "ANSI" zu "Unicode", zu "Big En
Zitat:
|
Re: "ANSI" zu "Unicode", zu "Big En
Wer mit so alten Delphiversionen arbeitet ist selber schuld, besondrs wenn er Unicodeverarbeitung machen will.
|
Re: "ANSI" zu "Unicode", zu "Big En
Zitat:
Soll ja auch leute geben die die ältere projekte betreuen |
Re: "ANSI" zu "Unicode", zu "Big En
Zitat:
Zitat:
Man sollte mindestens D3 besitzen um vernünftig mit Unicode arbeiten zu können. ElPack gab es in der 3.2er-Version noch für D3 |
Alle Zeitangaben in WEZ +1. Es ist jetzt 19:16 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz