Нашел решение:
soap_init1(&soap, SOAP_C_UTFSTRING);
вместо
soap_init(&soap)ж
Строка сообщения теперь содержит полноценный utf8, но осталась другая проблема: при возникновении ошибки — прилетает строка в непонятной кодировке...
if (soap_call___ns1__GetMessages(&soap, NULL, NULL, &input, &output) == SOAP_OK) {
...
}
else {
char buf[1024];
soap_sprint_fault(&soap, buf, 1024); // display the SOAP fault message on the stderr stream
const char** d = soap_faultdetail(&soap);
if (d) {
std::string err(*d);
setMessage(UTF8_Win1251(err).c_str());
}
}
FireFox показывает так:
<SOAP-ENV:Fault>
<faultcode>SOAP-ENV:Server</faultcode>
<faultstring>Application Error</faultstring>
<detail>
<error>
<text>
ОШИБКА #0: Неизвестный код статуса: <UserErrors>0 (неверный логин или пароль)
</text>
</error>
</detail>
</SOAP-ENV:Fault>
а строка err содержит
<error><text>ERROR #0: Unknown status code: <UserErrors>0 (неверный логин или пароль)</text></error>
Помогите, кто сталкивался с такой проблемой...