以下是我程序,但保存后的文件还是ANSI格式的,就是用记事本打开里面还是可以看的字符,原test.txt是看不懂的字符
var
  tmpFileName: String;
  tmpFile: TextFile;
  tmpUTF8Str: UTF8String;
  tmpStr: AnsiString;
  i: Integer;
begin
  tmpFileName := 'D:\Temp\test.txt';
  AssignFile(tmpFile, tmpFileName);
  try
    Rewrite(tmpFile);
    for i := 0 to Memo1.Lines.Count - 1 do
    begin
      tmpStr := Memo1.Lines[i];
      tmpUTF8Str := AnsiToUtf8(tmpStr);
      Writeln(tmpFile, tmpUTF8Str);
    end;
  finally
    CloseFile(tmpFile);
  end;
  ShowMessage('OK');

解决方案 »

  1.   

    我试过两种方法都可以:
    procedure TForm1.Button1Click(Sender: TObject); //方法1,API
    var
      t:pchar;
      f:thandle;
      w:dword;
    begin
      t:=pchar(ansitoutf8(memo1.Text));
      ShowMessage(t);
      f:=createfile('d:\temp\test.txt',GENERIC_WRITE,FILE_SHARE_WRITE ,nil,CREATE_ALWAYS,0,0);
      writefile(f,t^,length(t),w,nil);
      closehandle(f);
    end;procedure TForm1.Button2Click(Sender: TObject);  //TStringlist
    var
      t:tstringlist;
    begin
      t:=tstringlist.Create;
      t.add(ansitoutf8(memo1.Text));
      ShowMessage(t.Text);
      t.SaveToFile('d:\temp\test.txt');
      t.free;
    end;
    end.
      

  2.   

    请教keiy写成的文件用记事本打开其中的中文部分是什么样?如“中国人”会显示成什么?
      

  3.   

    记事本对中文的支持有问题,如:"联通"两个字在用记事本用ASNI保存后无法读出,所以,建议用ultra-edit