![]() |
UTF8 Literale leserlich machen. Welche Unit / Funktion?
Encoding von Zeichen war noch nie meine Stärke.
Gibt es in delphi eine Unit die aus \xc4\x80 den entsprechenden Buchstaben zaubert? |
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
Unit System
z.B. so:
Delphi-Quellcode:
var S:String;
begin S:=UTF8ToUnicodeString(#$C4#$80); ShowMessage(S); end; |
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
Das \x hat nichts mit Encoding zu tun, das sind programmiersprachen-eigene Maskierungen.
Du hast also 2 Bytes und willst das explizit als UTF-8 interpretieren.
Delphi-Quellcode:
Beispiel:
TEncoding.UTF8.GetString(..)
Delphi-Quellcode:
procedure TForm2.FormCreate(Sender: TObject);
const input: TBytes = [$c4, $80]; begin Caption := TEncoding.UTF8.GetString(input) + ' / ' + TEncoding.Unicode.GetString(input); end; |
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
Zitat:
Zitat:
Wie bekommt man denn einen String den man dann mit StringReplace bearbeitet hat in UTF8ToUnicodeString? Einen string mit ' umschlossen mag er nicht. |
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
Zitat:
#: Dies ist ein Char, den ich aber mit seiner Ordnungszahl angebe $: Dies ist eine Zahl in Hexadezimaldarstellung #13 und #$C sind also identische Chars. Ebenso '0', #48 und #$30. |
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
Das macht es noch komplizierter.
Wie bekommt man einen String wie ganz oben denn in TBytes rein oder in einen lesbaren String? Der Input kann immer wie oben aussehen. Er kann aber auch schon in lesbarer Form vorhanden sein. Da kann auch reinkommen
Delphi-Quellcode:
\xc4\x80\x16\x16\x16Hallo
Ich dachte an sowas hier aber da passt dieses spezielle A nicht mehr rein
Delphi-Quellcode:
Aber ich glaube ich habe gerade eh einen Knoten im Kopf.
var
Bytes: TBytes; begin Bytes := [Ord('Ā'), $80, Ord('S')]; ShowMessage(TEncoding.UTF8.GetString(Bytes)); |
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
Zitat:
|
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
Ja richig. Das kann ein String sein der Nur aus solchen Literalen besteht, es kann ein Klartext sein oder eine Mischung.
Und ich bin mir nicht sicher, wie ich damit umgehen soll, um aus jeder dieser Varianten den Klartext zu bekommen. Würde mich über Hilfe freuen. Sowas hier klappt natürlich auch nicht.
Delphi-Quellcode:
VonDatei := '\xc4\x80\xc4\x86Hallo';
Bytes := TEncoding.UTF8.GetBytes(VonDatei); ShowMessage(TEncoding.UTF8.GetString(Bytes)); |
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
Eine dumme Idee: Kommt man mit so etwas in der Richtung weiter?
Delphi-Quellcode:
procedure TTest.p();
const input = '\xc4\x80\xc4\x86Hallo'; pattern = '\\x((\d|[a-f]*){2})'; var matchEvaluator: TMatchEvaluator; begin WriteLn( TRegEx.Replace(input, pattern, unescape) ); end; function TTest.unescape(const match: TMatch): String; var hexNumber: String; begin hexNumber := '$' + match.Groups[1].Value; Result := Chr( Byte.Parse(hexNumber) ); end; |
AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?
ich versuche das gerade zu verstehe und zu kompilieren aber irgendwas stimmt mit dieser Zeile nicht
Delphi-Quellcode:
TRegEx.Replace(input, pattern, unescape)
|
Alle Zeitangaben in WEZ +1. Es ist jetzt 05:59 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