Aber wie wandle ich \xc4\x80\xc4\x86
in buffer := [$c4,$80,$c4,$86];
um darum gehts ja seit 2 Seiten.
Das ist nur ein Beispielstring. Da könnte alles stehen. Auch Klartext und Mischung aus Klartext und Kodierung.
Nein, aktuell ging es erst einmal darum, dass du verstehst, was du da denn eigentlich vor dir hast - ein UTF8 codiertes Gedöns.
Ich zeige dir jetzt einmal, wie man das bekommt, was du da verarbeiten musst:
Delphi-Quellcode:
function EncodeBytes(const Buffer: TBytes): string;
var
idx: Integer;
begin
result := string.Empty;
for idx := Low(Buffer) to High(Buffer) do
begin
if (Buffer[idx] < $20) or (Buffer[idx] > $7F) then
result := result + string.Format('\x%2.2x', [Buffer[idx]]).ToLowerInvariant()
else
result := result + Chr(Buffer[idx]);
end;
end;
const
SomeStr = 'ĀĆHallo';
var
Utf8Buffer: TBytes;
EncodedBufferStr: string;
begin
Utf8Buffer := TEncoding.UTF8.GetBytes(SomeStr);
EncodedBufferStr := EncodeBytes(Utf8Buffer);
Writeln(EncodedBufferStr); // \xc4\x80\xc4\x86Hallo
Readln;
end.
Jetzt solltest du auch den Rückweg hinbekommen ...