Накатал процедурку может немного странной покажется, но у меня работает...
function StrToUtf8(s:string):string;
var
i,j:integer;
a:string;
begin
a:='';
for i:=1 to length(s)-1 do
begin
j:=ord(GetChar(s,i));
if ((j>65438 )and(j<65456))or((j>65455)and(j<65472))or((j>65423 )and(j<65439)) then a:=a+chr(j-64384)
else if (j=65425)or((j>65407)and(j<65424)) then a:=a+chr(j-64320)
else if j=65488 then
begin
a:=a+chr(j-65456);
i:=i-1;
end
else
begin
a:=a+chr(j);
i:=i-1;
end;
i:=i+1;
end;
StrToUtf8:=a;
end;
Одно "НО" После русских букв перед знаками препинания надо ставить пробел...