strMem:=ADOQText.fieldByName('内容').AsString;
  filename:='template.htm';
      
  fm:=TFileStream.Create(filename,fmCreate);
  fm.Seek(0,soFromBeginning);
  fm.Write(strMem,length(strMem));
  fm.Free;
用文件流把从字段中的内容读出来后写入文件中,最后生成的文件为什么是乱码呢
在线等

解决方案 »

  1.   

    将strMem改成strMem[1],测试代码:var fm : TFileStream;
        strMem : string;
    begin
      strMem:='1234567890'+#13#10+'abcde';
      fm:=TFileStream.Create('c:\1.txt',fmCreate);
      fm.Seek(0,soFromBeginning);
      fm.Write(strMem[1], length(strMem));
      fm.Free;
    end;
      

  2.   

    数据库乱码一般由于数据库服务器/客户端语言集不一致引起的(与数据库有关,不知你用什么数据库),由于你本身是文本格式的,可先用Memo将内容显示出来看看,还有,可能你存入数据库的内容是unicode或其它编码格式
      

  3.   

    用memo显示也是对的
    甚至断点调式的时候,运行到strmem取出数据来,也能看到字符串是对的,但是就写到文件里部队
    数据库用sqlserver,nvarchar字段类型
      

  4.   

    如果memo显示正确的话,也可用TStringList来代替FileStream 这样试试看
    var
      SL: TStringList;SL := TStringList.Create;SL.Text := ADOQText.fieldByName('内容').AsString;
    SL.SaveToFile('c:\a.txt');
    SL.Free;