关于XE10.2将文本转码UTF-8的问题
问题描述
转UTF-8的函数在DELPHI7.0的环境里 导出的文件格式都是正确的。
同样的代码移植到XE10.2环境里 导出来的文件内容格式 就不正常了。
转码内容 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 >
转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 >
...全文
相关推荐
js字符集转码函数
为了方便大家在jsp页面中,通过js代码实现字符集转换,在这儿总结了一些js字符集转码函数,方便大家使用!!
xe10_utf_8转换
xe10_utf_8转换
XE5\XE6\XE7\XE8\XE10 AES加密
支持Ansi Unicode UTF8加密解密(支持多位,CSDN上XE2 AES加密解密只支持16位,好东西要分享)。
Python3之乱码\xe6\x97\xa0\xe6\xb3\x95处理方式
主要介绍了Python3之乱码xe6x97xa0xe6xb3x95处理方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
DELPHI INdy10 TCP2个示例XE可用.rar
源码使用delphi做的TCP的测试程序,主要介绍idTcpclient和idTcpServer的使用。此包两个程序,一个是tcp客户端向服务端发送普通的字符串。服务端对客户端发来的字符串进行显示,并返回信息给客户端。另一个程序介绍TCP客户端如何发送由多个记录组成的数据包到服务端。服务端如何校验消息头和提取消息内容,并返回应答消息包给客户端。代码中每句都有解释,并且有一篇本人自己写的关于本程序的思路和代码意思。目的是希望大家能够互相学习。 程序是使用delphixe3开发的


数据库相关
