Einzelnen Beitrag anzeigen

Schokohase
(Gast)

n/a Beiträge
 
#17

AW: UTF8 Literale leserlich machen. Welche Unit / Funktion?

  Alt 22. Jul 2019, 20:02
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 ...
  Mit Zitat antworten Zitat