关于使用soap开发webservices中的传输包含中文的字符会产生乱码的问题(急)(200分)

  • 主题发起人 主题发起人 zzc007
  • 开始时间 开始时间
Z

zzc007

Unregistered / Unconfirmed
GUEST, unregistred user!
我使用delphi7提供的soap开发向导生成服务端程序。提供查询数据库并返回xml格式的string的服务。
现在问题是:我在服务端使用adoquery,将查询结果savetofile成一个xml文件,然后将文件内容转成string。此时一切没有问题,中文字符也是对的。发送到客户端的时候,发现接收的string里面中文都是乱码。遂修改生成soap消息的HTTPSoapDispatcher控件,添加encoding为gb2312。但是没有起到任何作用,希望哪位高人指点一下!
 
没人回答吗?我急啊,回答正确就送分啊![8D]
 
唉,老问题啦,想当年为此我也郁闷了好久。
只要将HttpRio的 Converter 的 Options 的 soUTF8InHeader 设为 True 就可以啦
 
to helloqiner:老大,好像没有用啊。我将HttpRio的options设了呀,接收到的还是有乱码啊,呵呵,我还将服务端的也设了,连encode也设为gb2312了,还是一样啊。郁闷啊!
 
up,各位大哥,最新发现,居然传输时有的中文可以,有的中文不行。象我用Adoquery的Savetofile生成的xml文件,因为里面有二进制的数据,所以中文不管怎么弄都不行。但是如果是比较简单的一些中文字符,则传输不出现问题。不知道这是不是delphi的bug啊。呵呵。
 
up 呵呵 谢谢,虽然问题没有解决还是要感谢helloqiner老兄。
 
我说呢,这样设置应该没问题复杂的呀,怎么会出错。原来你要用Web Service传输二进制数据啊,那样肯定不行。你需要在服务器端将二进制数据转换为base64编码格式,然后在客户端将Base64数据还原才可以。
 
具体方法:
uses EncdDecd;
s := EncodeString(s);
//加 base64 编码
s := DecodeString( str );
//解码
 
谢谢helloqiner好兄,问题解决了,但是delphi的encodestirng和decodestring有问题。我后来自己去找了一个编码,解码函数解决了问题。不过你的回答已经解决了我的问题。给分。再一次谢谢老兄!
 
后退
顶部