function winstr (s:string):string;
var i:integer;
c: char;
tc:integer;
st:string;
begin
st:='';
for i:=0 to length(s)-1 do begin
c:=getchar(s,i);
tc:=ord(c)-848;
if (tc>191) and (tc<256) then st:=st+chr(tc) else st:=st+c;
end;
winstr:=st;
end;
function utfstr (s:string):string;
var i:integer;
c: char;
tc:integer;
st:string;
begin
st:='';
for i:=0 to length(s)-1 do begin
c:=getchar(s,i);
tc:=ord(c)+848;
if (tc>1039) and (tc<1104) then st:=st+chr(tc) else st:=st+c;
end;
utfstr:=st;
end;
Строки в хранилищах сохраняем через winstr читаем через utfstr.
Не стоит придумывать urlencode и т.п для таких простейших задач.
С буквой "Ё" решение найдёте сами всё очень просто