Wie schon gesagt, wenn du ein nur in und von
ANSI konvertierst, dann entspricht der
Unicode-String der UTF16-Darstellung,
da nur Unicodezeichen zwischen #$8000 und #$fffd in
unicode und utf16 eine andere Darstellung besitzen.
Delphi-Quellcode:
function AnsiToUtf16(
const s: AnsiString): WideString;
//var i: Integer;
begin
Result := s;
//for i := 1 to Length(Result) do
// if Result[i] > #$7fff then
// raise Exception.Create('is not an utf8 string');
end;
function Utf16ToAnsi(
const s: WideString): AnsiString;
var i: Integer;
begin
for i := 1
to Length(s)
do
if s[i] > #$7fff
then s[i] := '
?';
Result := s;
end;
(wenn du unbedingt willst, dann kannst du ja gern die auskommentierte Prüfung aktivieren, aber diese wird eh nicht's melden)