Код:
Function ADecodeRusSymbols(Str, Symbol: string; Base: integer): string;
var i: integer;
begin result:=StrReplace(false, Str, Symbol, '&#'+intToStr(192+Base)+';', i); end;
Function BDecodeRusSymbols(Count: integer): string;
begin
case Count of
0: result:='А'; 1: result:='Б'; 2: result:='В'; 3: result:='Г'; 4: result:='Д'; 5: result:='Е'; 6: result:='Ж'; 7: result:='З'; 8: result:='И'; 9: result:='Й';
10: result:='К'; 11: result:='Л'; 12: result:='М'; 13: result:='Н'; 14: result:='О'; 15: result:='П'; 16: result:='Р'; 17: result:='С'; 18: result:='Т'; 19: result:='У';
20: result:='Ф'; 21: result:='Х'; 22: result:='Ц'; 23: result:='Ч'; 24: result:='Ш'; 25: result:='Щ'; 26: result:='Ъ'; 27: result:='Ы'; 28: result:='Ь'; 29: result:='Э';
30: result:='Ю'; 31: result:='Я'; 32: result:='а'; 33: result:='б'; 34: result:='в'; 35: result:='г'; 36: result:='д'; 37: result:='е'; 38: result:='ж'; 39: result:='з';
40: result:='и'; 41: result:='й'; 42: result:='к'; 43: result:='л'; 44: result:='м'; 45: result:='н'; 46: result:='о'; 47: result:='п'; 48: result:='р'; 49: result:='с';
50: result:='т'; 51: result:='у'; 52: result:='ф'; 53: result:='х'; 54: result:='ц'; 55: result:='ч'; 56: result:='ш'; 57: result:='щ'; 58: result:='ъ'; 59: result:='ы';
60: result:='ь'; 61: result:='э'; 62: result:='ю'; 63: result:='я';
end; end;
procedure DecodeRusSymbols(Memo: Tmemo);
var Cnt, i: integer; begin Cnt:=0; repeat
Memo.Lines.Strings[Cnt]:=StrReplace(false, Memo.Lines.Strings[Cnt], 'Ё', 'Е', i);
Memo.Lines.Strings[Cnt]:=StrReplace(false, Memo.Lines.Strings[Cnt], 'ё', 'е', i);
Memo.Lines.Strings[Cnt]:=StrReplace(false, Memo.Lines.Strings[Cnt], '—', '-', i);
Memo.Lines.Strings[Cnt]:=StrReplace(false, Memo.Lines.Strings[Cnt], '«', Form1.label3.Caption, i);
Memo.Lines.Strings[Cnt]:=StrReplace(false, Memo.Lines.Strings[Cnt], '»', Form1.label3.Caption, i);
Memo.Lines.Strings[Cnt]:=StrReplace(false, Memo.Lines.Strings[Cnt], '"', Form1.label3.Caption, i);
Memo.Lines.Strings[Cnt]:=StrReplace(false, Memo.Lines.Strings[Cnt], '"', Form1.label3.Caption, i);
for i:= 0 to 63 do Memo.Lines.Strings[Cnt]:=ADecodeRusSymbols(Memo.Lines.Strings[Cnt], BDecodeRusSymbols(i), i);
inc(Cnt); until Cnt >= Memo.Lines.Count; end;