![]() |
Ausgabe eines UTF8-Strings in UTF8-Darstellung
Wie kann ich einen UTF8-String auch als solchen Ausgaben.
Sprich: äöü soll als äöü ausgegeben werden. Mit ungeänderten Code kommt nur äöü raus :-( |
AW: Ausgabe eines UTF8-Strings in UTF8-Darstellung
sowas?
Delphi-Quellcode:
var
Usr:UTF8String; Asr:AnsiString; begin Usr := 'äöü'; Setlength(Asr,Length(Usr)); Move(Usr[1],Asr[1],Length(Usr)); Showmessage(asr); end; 齅äöü >> Length(Usr)=9 齅äöü1234567890 >> Length(Usr)=19 |
AW: Ausgabe eines UTF8-Strings in UTF8-Darstellung
Delphi-Quellcode:
1) R muß auf RAW stehen, da Delphi sonst denkt es sei was Anderes und würde es dann nach Unicode umwandeln.
var
U: UTF8String; R: RawByteString; S: string; U := 'irgendwas mit ä'; // Delphi konvertiert das alleine, da bei diesem "AnsiString"-Typen die CodePage auf UTF-8 steht R := U; SetCodePage(R, $FFFF, False); // R hat die CodePage kopiert bekommen, daher explizit auf RAW umstellen S := R; // *1 ShowMessage(S); // kurz R := UTF8Encode('irgendwas mit ä'); SetCodePage(R, $FFFF, False); // R hat die CodePage kopiert bekommen, daher explizit auf RAW umstellen ShowMessage(R); // *1 Bei UTF-8 wäre nun alles umsonst gewesen und bei ANSI würde er die UTF-8-Zeichen im String schrotten, da er alles zwischen #128 und #255 nach Unicode konvertieren würde, entsprechend der ANSI-CodePage. Oder du nutzt TEncoding für die Umwandlung. [info] ich hoffe der nicht ausprobierte Code funktioniert so wie gedacht :stupid: |
AW: Ausgabe eines UTF8-Strings in UTF8-Darstellung
@himitsu
mit
Delphi-Quellcode:
tut es wie gewünscht ...
SetCodePage(R, $0000, False);
|
AW: Ausgabe eines UTF8-Strings in UTF8-Darstellung
Danke mit 0 statt $FFFF hat es geklappt. SetCodePage werde ich mir wohl gut merken müssen :-)
Damit ist mein kleines UTF8/Unicode-Hilfstool auch nach XE2 portiert :-) |
AW: Ausgabe eines UTF8-Strings in UTF8-Darstellung
Bei CodePage 0 (CP_ACP) mußt du aufpassen, da dort die StandardCodePage des Systems Prozesses verwendet wird.
Je nach ACP kommt da eventuell ein anderer Unicode-Text raus. RAW ist quasi eine 1-zu-1-CodePage: ANSI(x) = Unicode(x) Du kannst natürlich auch direkt eine bestimmte CodePage beim SetCodePage angeben. ( ![]() |
AW: Ausgabe eines UTF8-Strings in UTF8-Darstellung
Zitat:
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 10:52 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 by Thomas Breitkreuz