问题描述
转UTF-8的函数在DELPHI7.0的环境里 导出的文件格式都是正确的。
同样的代码移植到XE10.2环境里 导出来的文件内容格式 就不正常了。
//转码过程如下
procedure Tfrm_outdata.SaveUTF8File(AContent, AFileName: string);
var
ffileStream:TFileStream;
futf8Bytes: string;
S: string;
begin
ffileStream:=TFileStream.Create(AFileName,fmCreate);
futf8Bytes:= UTF8Encode(AContent);
S:=#$EF#$BB#$BF;
ffileStream.Write(S[1],Length(S));
ffileStream.Write(futf8Bytes[1],Length(futf8Bytes));
ffileStream.Free;
end;
//调用方法如下:将memoa的内容转码生成文件名为filenameok的文件
SaveUTF8File( Memoa.Lines.Text,filenameok);
转码内容 delphi7.0 的转码文件内容:
<?xml version="1.0" encoding="utf-8"?>
<SIGNATURE xmlns="www.xxxxxx.com">
<OBJECT>
<PACKAGE>
<ENVELOPINFO>
<VERSION>v1.0</VERSION>
<MESSAGE_ID>25CAF2C5-29E0-4F6E-9AE0-121C5C6CA873</MESSAGE_ID>
<FILE_NAME>k_init_20190812160838_1301000061#1.xml</FILE_NAME>
<MESSAGE_TYPE>init</MESSAGE_TYPE>
<SENDER_ID>1301000061</SENDER_ID>
<SEND_TIME>2019-08-12 16:08:38</SEND_TIME>
<RECEIVER_ID>1300000000</RECEIVER_ID>
<SOFTTYPE>1</SOFTTYPE>
<SENDERNAME>某某有限公司</SENDERNAME>
</ENVELOPINFO>
<DATAINFO>
<ROWINFO>
<I_ITEM_CODE>G0310000095157</I_ITEM_CODE>
<BARCODE></BARCODE>
<YPPH>20181108</YPPH>
<VDATE>2020-10-31 00:00:00</VDATE>
而 XE10.2转码出来的文件中的内容为: 内容松散 并且汉字有乱码
? ? x m l v e r s i o n = " 1 . 0 " e n c o d i n g = " u t f - 8 " ? >
< S I G N A T U R E x m l n s = " w w w . xxxxxx . c o m " >
< O B J E C T >
< P A C K A G E >
< E N V E L O P I N F O >
< V E R S I O N > v 1 . 0 < / V E R S I O N >
< M E S S A G E _ I D > C D 6 8 A 1 3 C - 2 D D 9 - 4 A E F - B 4 6 F - 7 5 F 6 4 B 4 E 8 0 C 2 < / M E S S A G E _ I D >
< F I L E _ N A M E > k _ i n _ 2 0 1 9 0 8 2 2 1 7 0 5 3 8 0 1 0 _ 1 3 0 1 0 0 0 0 6 1 # 1 . x m l < / F I L E _ N A M E >
< M E S S A G E _ T Y P E > i n < / M E S S A G E _ T Y P E >
< S E N D E R _ I D > 1 3 0 1 0 0 0 0 6 1 < / S E N D E R _ I D >
< S E N D _ T I M E > 2 0 1 9 - 0 8 - 2 2 1 7 : 0 5 : 3 8 < / S E N D _ T I M E >
< R E C E I V E R _ I D > 1 3 0 0 0 0 0 0 0 0 < / R E C E I V E R _ I D >
< S O F T T Y P E > 1 < / S O F T T Y P E >
< S E N D E R N A M E > 砽SO酧;So?gP杔Q鳶< / S E N D E R N A M E >
< / E N V E L O P I N F O >
< D A T A I N F O >
< R O W I N F O >
< I _ I T E M _ C O D E > J 0 3 1 0 0 0 0 1 1 8 9 2 0 < / I _ I T E M _ C O D E >
< Y P P H > 1 9 0 3 0 0 9 < / Y P P H >
< V D A T E > 2 0 2 0 - 1 0 - 3 1 0 0 : 0 0 : 0 0 < / V D A T E >
< P A C K A G E > 6 4 u g / 稶* 1 2 0 稶/ /e< / P A C K A G E >
< U N I T > 襳< / U N I T >
< N U M > 1 0 0 < / N U M >
< J Z _ D A T E > 2 0 1 9 - 0 8 - 2 0 0 0 : 0 0 : 0 0 < / J Z _ D A T E >
< F P H > A D H 1 0 0 2 7 1 5 5 < / F P H >
< I _ M E R _ C O D E > 9 1 1 3 0 1 0 0 6 9 5 8 5 2 3 6 4 Y < / I _ M E R _ C O D E >
< M E R _ N A M E > 齎o働N罭X;So?gP杔Q鳶D < / M E R _ N A M E >
< M E R A _ C O D E > 1 3 0 1 0 2 0 0 0 0 0 0 < / M E R A _ C O D E >
< B I L L _ T Y P E > 1 < / B I L L _ T Y P E >
< / R O W I N F O >
< R O W I N F O >
< I _ I T E M _ C O D E > J 0 3 1 0 0 0 0 1 1 8 9 3 0 < / I _ I T E M _ C O D E >
< Y P P H > 1 8 1 2 1 6 3 < / Y P P H >
< V D A T E > 2 0 2 0 - 0 9 - 3 0 0 0 : 0 0 : 0 0 < / V D A T E >
< P A C K A G E > 3 2 u g / 稶* 1 2 0 稶/ /e< / P A C K A G E >
< U N I T > 襳< / U N I T >
< N U M > 2 0 < / N U M >
< J Z _ D A T E > 2 0 1 9 - 0 8 - 2 0 0 0 : 0 0 : 0 0 < / J Z _ D A T E >
< F P H > A D H 1 0 0 2 7 1 5 5 < / F P H >
< I _ M E R _ C O D E > 9 1 1 3 0 1 0 0 6 9 5 8 5 2 3 6 4 Y < / I _ M E R _ C O D E >