var
  Response: TMemoryStream;
begin
  Source := TMemoryStream.Create;
  try
    Source.LoadFromFile(edPostFile.Text);
    HTTP.Post(cbURL.Text, Source, Response);
    Response.SaveToFile('d:\tmp.txt');
  finally
    Source.Free;
   end;
end;
通过如上代码获取java服务返回地xml,保存到记事本中不正常,里面有空格的地方都是黑方块,中文是乱码,拷出来是以是如下
? < ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " U T F - 1 6 " ? > 
 < r e s p o n s e > 
 < e r r o r > 
 < i d > 7 0 0 3 1 < / i d > 
 < t y p e > 
 1 
 < / t y p e > 
 < m e s s a g e > 
夈懯 X M LQ鷷 
 < / m e s s a g e > 
 < / e r r o r > 
 < d a t a > 
 < / d a t a > 
 < / r e s p o n s e >

解决方案 »

  1.   

    ? x m l   v e r s i o n = " 1 . 0 "   e n c o d i n g = " U T F - 1 6 " ?
    指出了这个xml的编码格式了,你将utf-16转化成ascii或者unicode就可以显示了
      

  2.   

    不知怎么转,用MemoryStream,怎么转换后存入'd:\text'
    用StringStream我也试过,Respone.datastring返回的都是#0隔开了的数据,我用
    Utf8ToAnsil转换后内容就为空了
      

  3.   

    是utf-16不是utf-8MultiByteToWideChar
    WideCharToMultiByte
    这两个函数转把,有支持utf-16的