最近为公司开发一个soap接口的客户端程序,开发环境是vc,首选当然是 Microsoft SOAP Toolkit ,但是在开发中,Microsoft系统的专有性与平台依赖性让人感到颇为不爽,我想我需要的是一段轻便且对平台不是很挑剔的代码。这时,gsoap出现在我的视野中,gsoap具有强大功能和轻巧的结构,这正是我需要的客户端工具。
但是gsoap的使用并不向想象中顺利,很快gsoap出现了中文字符转utf8的问题。gsoap编码的汉字为单字节utf8表示,而java编写的服务端采取的是双字节表示,这时string类型的变量在出现汉字时将产生编码错误问题。
该问题的简单解决办法是编码完成后再送入gsoap客户端接口,因为编好码的utf8汉字表示为&#××××,所以应屏蔽gsoap客户端程序中关于符号的转义的代码。这样即可以解决该问题。gsoap客户端接收亦可采用自己解码的方式解决汉字乱码问题。
虽然问题顺利的解决,但是对于gsoap的多字节文字的编码与解码,我还是有些疑惑,该问题是否有gsoap的标准解决方式。