Ich merkte schon vor paar Stunden dass die Verwendung von AnsiString, UTF8String oder sogar RawByteString ab Delphi 2009 sehr gefährlich ist weil Delphi diese Datentypen anscheinend nie in Ruhe lässt und je nach Lust und Laune PageCode-Konvertierungen damit macht. Siehe z.B. hier:
http://stackoverflow.com/questions/2...oke-utf8decode
Ich habe es schon mal mit TBytes versucht.
Ich will folgendes haben.
Input ist string (=UnicodeString, also UTF16).
Ich will diesen Ziplib komprimieren (möglichst ohne UTF8 Konvertierung, schaffe es aber nicht ohne) und dann nach Base64 (nicht im Beispielcode) wandeln um in eine Datenbank zu speichern.
Delphi-Quellcode:
s: TBytes;
...
s := TEncoding.UTF8.GetBytes(aText);
strInput:= TStringStream.Create(s);
strOutput:= TStringStream.Create;
Ich komme aber danach nicht weiter, weil strOutput.DataString ein AniString ist und kein TBytes. Es verhält sich also je nach Windows-Version anders.