Есть Tntmemo1 и Tntmemo2. У обеих   tntmemo1.Font.Name:=Arial Sakha Unicode (Якутский шрифт) и там и там могу набрать нац. символы. Нормально отображаются.
Но если набираю в 1-м и записываю так:
	Код:
	procedure TForm1.Button2Click(Sender: TObject);
var
  w:string;
procedure writestring(ss:string);
var sizess:byte;
begin
  sizess:=length(ss);
  blockWrite(f,sizess,sizeof(sizess));//Записываю длину
  blockWrite(f,ss[1],sizess*sizeof(ss[1]));//Записываю строку
end;
begin
  w:=utf8encode(tntmemo1.Text);
  assignfile(f,'1.dat');
  rewrite(f,1);
  writestring(w);
  closefile(f);
end;
 
 
а во втором читаю так:
	Код:
	procedure TForm1.Button1Click(Sender: TObject);
function readstring():string;
var sizess:byte;
  s:string;
begin
  blockRead(f,sizess,sizeof(sizess));
  Setlength(s,sizess);
  blockRead(f,s[1],sizess*Sizeof(s[1]));
  result:=utf8decode(s);
end;
begin
  assignfile(f,'1.dat');
  reset(f,1);
  tntmemo2.Lines.Add(readstring());
  closefile(f);
end;
 
 
то нац. символы во втором отображаются знаками '?', а кириллица нормально отображается.
Скриншот и файл прикрепляю