解决gsoap 中文编码问题?

时间:2022-09-22 18:48:14
网上很多关于gsoap中文编码的问题,
网上流行的方案是在讲数据送入gsoap 之前将数据转换为utf8编码,很多人之所以这么做是因为设置了如下编码方式
 soap_init(&soap);
 soap_set_mode(&soap,SOAP_C_UTFSTRING);
故gsoap要求接收的数据是utf8编码的。
gsoap 的 核心内部是入和出都是UTF8编码的,由于中文是多字节的,所以将多字节的按照UTF8转换,最终结果就是乱码。
正确的方式如下:
 soap_init(&soap);
 soap_set_mode(&soap,SOAP_C_MBSTRING);
既可以处理中文,gsoap 根据SOAP_C_MBSTRING内部实现到UTF8的转换,而不需要用户额外转换。


11 个解决方案

#1


感谢分享..

#2



hellomap.dat:
xsd__string = | std::wstring | wchar_t*



wsdl2h.exe -so Hello.h -n Hello -t hellomap.dat http://127.0.0.1/WebServer/Service.asmx?wsdl 

这样得到的头文件也直接可以支持中文了。

#3


该回复于2010-12-06 09:46:16被版主删除

#4


感谢楼主~经试验,有编码问题的返回数据果然修改过来了

#5


感谢楼主分享。

#6


谢谢分享,接分,不知道有没!

#7


该回复于2011-01-19 14:30:55被版主删除

#8


该回复于2011-01-24 08:38:45被版主删除

#9


返回数据还是乱码了。
web service 发送数据是utf-8,有汉字,设置为SOAP_C_MBSTRING 同样乱码了。

#10


对啊,都不行,无论是2楼的还是楼主的方案都无法解决乱码的问题啊

#11


抓包,抓包。

#1


感谢分享..

#2



hellomap.dat:
xsd__string = | std::wstring | wchar_t*



wsdl2h.exe -so Hello.h -n Hello -t hellomap.dat http://127.0.0.1/WebServer/Service.asmx?wsdl 

这样得到的头文件也直接可以支持中文了。

#3


该回复于2010-12-06 09:46:16被版主删除

#4


感谢楼主~经试验,有编码问题的返回数据果然修改过来了

#5


感谢楼主分享。

#6


谢谢分享,接分,不知道有没!

#7


该回复于2011-01-19 14:30:55被版主删除

#8


该回复于2011-01-24 08:38:45被版主删除

#9


返回数据还是乱码了。
web service 发送数据是utf-8,有汉字,设置为SOAP_C_MBSTRING 同样乱码了。

#10


对啊,都不行,无论是2楼的还是楼主的方案都无法解决乱码的问题啊

#11


抓包,抓包。