mystring := UTF8Decode(#$C4+#$80+#$C4+#$86+'Hallo');
Das ergibt den String "ĀĆHallo"
Das Problem ist nun die "\x.." Zeichen in den entsprechenden 8-bit Zeichen Code umzuwandeln. Habe dazu schnell eine simple Routine geschrieben, die das macht. Diese müsste aber eventuell noch etwas überarbeitet werden, jenach dem was der Quellstring wirklich alles enthalten kann.
Delphi-Quellcode:
function DecodeCStyleString(const AStr: String): String;
var
HexStr, ResultStr: RawByteString;
i: Integer;
IsCharLeadin: Boolean;
begin
IsCharLeadin := False;
i := 1;
while i <= Length(AStr) do
begin
IsCharLeadin := AStr[i] = '\';
if IsCharLeadin then
begin
IsCharLeadin := AStr[i+1] = 'x';
if IsCharLeadin then
begin
inc(i, 2);
HexStr := '$' + AStr[i] + AStr[i+1];
ResultStr := ResultStr + AnsiChar(StrToInt(HexStr));
inc(i);
end
else
ResultStr := ResultStr + AnsiChar(AStr[i]);
end
else
ResultStr := ResultStr + AnsiChar(AStr[i]);
inc(i);
end;
Result := UTF8ToString(ResultStr);
end;
...
MyString := DecodeCStyleString('\xc4\x80\xc4\x86Hallo\xc4\x80');
// MyString ist nun "ĀĆHalloĀ"