I’ve found the problem.
As I said earlier, there is a problem in FPC itself.
open %Lazarus%\fpc\2.6.4\source\packages\fcl-db\src\base\db.pas and look for TDataSet.DataConvert :
procedure TDataSet.DataConvert(aField: TField; aSource, aDest: Pointer;
aToNative: Boolean);
// There seems to be no WStrCopy defined, this is a copy of
// the generic StrCopy function, adapted for WideChar.
Function WStrCopy(Dest, Source:PWideChar): PWideChar;
var
counter : SizeInt;
Begin
counter := 0;
while Source[counter] <> #0 do
begin
Dest[counter] := char(Source[counter]); //<<< here should be WideChar instead of char , so it loses all unicode chars
Inc(counter);
end;
{ terminate the string }
Dest[counter] := #0;
WStrCopy := Dest;
end;
...