D7项目升级记录

博客主要讲述了Indy9 tcp服务与Indy10客户端通信的相关内容。服务端数据采用JSON格式,经DES加密和base64转换,在xe版本使用原加密方法时出现中文乱码问题,通过特定处理解决。同时指出通信时数据收发需进行Ansi编码转换,还提及RES资源文件字符串编码为ANSI。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

服务端数据:

JSON格式然后DES加密之后base64转换

Delphi Post获取数据后

由于原有解密程序为D7下使用

Des(Astr:string):string;

String-à是ansistring

     

现在要在xe版本中使用原有的加密方法时直接替换所有string为ansistring,chr函数为ansichar。

Des(Astr:Ansistring):Ansistring;

解密出字符串用Utf8toAnsi转换后中文奇数个时出现乱码。

Eg:

{"book_isbn":"9787530125434","book_issn":"","book_cn":"","book_barcode":"","book_name":"名人?专著 ","book_keyword":"","book_author":" (?罗曼·罗兰原著 ; 郭琳改写","book_publishing_house":"北京 : 北京少年儿童出版?,"book_edition":"3?,"book_series":"","book_publish_date":" 2010","book_publish_cycle":"","book_binding":"","book_title_page":"","book_text_page":"","book_price":"0.0000","book_type_no":"K835.165.76=41","book_types":"贝多?(Beethoven, ludwing Van 1770-1827) -- 传记 -- 缩写","book_size":"","book_words":"","book_sheet":"","book_pages":"147?: 彩图 ; 24cm","book_object":"贝多?(Beethoven, ludwing Van 1770-1827) -- 传记 -- 缩写","book_abstract":""}

后来输入二进制发现

输入字符串在乱码的位置都出现了3F 怀疑是返回结果为ansistring时转换时出错。

随添加数据labytes:Tbytes;直接把转换结果存入数据后。用Tencoding.UTF8.GetString返回,结果显示正常。

暂时这样处理。

   

Indy9 tcp服务与indy10客户端通信

需要注意发送的数据需要编码为Ansi 接收的数据也要转码为Ansi

IOHandler.Write(Astr,indytextEncodeing(Tencoding.ANSI));//发送

   

IOHandler.InputBuffer.Size>0 //接收

IOHandler.InputBufferAsString(indyTextEncoding(Tencoding.ANSI))

 

RES资源文件中的字符串

 

资源文件是原来D7下生成的,因此其中字符串的编码也是ANSI

读出到buffer时buffer类型需要是byte 或者ansichar的数据

转载于:https://www.cnblogs.com/jspdelphi/p/9543644.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值