网上流行的方案是在讲数据送入gsoap 之前将数据转换为utf8编码,很多人之所以这么做是因为设置了如下编码方式
soap_init(&soap);故gsoap要求接收的数据是utf8编码的。
soap_set_mode(&soap,SOAP_C_UTFSTRING);
gsoap 的 核心内部是入和出都是UTF8编码的,由于中文是多字节的,所以将多字节的按照UTF8转换,最终结果就是乱码。
正确的方式如下:
soap_init(&soap);既可以处理中文,gsoap 根据SOAP_C_MBSTRING内部实现到UTF8的转换,而不需要用户额外转换。
soap_set_mode(&soap,SOAP_C_MBSTRING);
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
#4
感谢楼主~经试验,有编码问题的返回数据果然修改过来了
#5
感谢楼主分享。
#6
谢谢分享,接分,不知道有没!
#7
#8
#9
返回数据还是乱码了。
web service 发送数据是utf-8,有汉字,设置为SOAP_C_MBSTRING 同样乱码了。
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
#4
感谢楼主~经试验,有编码问题的返回数据果然修改过来了
#5
感谢楼主分享。
#6
谢谢分享,接分,不知道有没!
#7
#8
#9
返回数据还是乱码了。
web service 发送数据是utf-8,有汉字,设置为SOAP_C_MBSTRING 同样乱码了。
web service 发送数据是utf-8,有汉字,设置为SOAP_C_MBSTRING 同样乱码了。
#10
对啊,都不行,无论是2楼的还是楼主的方案都无法解决乱码的问题啊
#11
抓包,抓包。