BSTR类型经过UTF-8编码后中文显示为乱码,怎么解决?

时间:2023-01-04 23:22:51
ATL开发的一个WebService:
STDMETHODIMP CDataOpt::GetRS(BSTR *buf)
{
    *buf = ::SysAllocString(L"中国");
    return S_OK;
}

WebService采用UTF-8编码.

客户端接收后显示的是乱码,怎么解决呀?

5 个解决方案

#1


要设置编码。

#2


我用的是VC+gSoap开发客户端,设置了的:soap->SetMode(中文);
起作用的,但   是另一种乱码.

急呀.

#3



WCHAR *pwszTemp = L"中文";

INT nLen = WideCharToMultiByte(CP_UTF8, 0, pwszTemp, -1, NULL, 0, NULL, NULL);
        CHAR *pszUTF8 = new CHAR[nLen+1];

WideCharToMultiByte(CP_UTF8, 0, pwszTemp, -1, pszUTF8 , nLen, NULL, NULL);
}

#4


gSoap貌似只支持Ansi和UTF-8格式吧。

#5


看客户端是否有问题,这里似乎没问题啊。

英文有乱码吗?

#1


要设置编码。

#2


我用的是VC+gSoap开发客户端,设置了的:soap->SetMode(中文);
起作用的,但   是另一种乱码.

急呀.

#3



WCHAR *pwszTemp = L"中文";

INT nLen = WideCharToMultiByte(CP_UTF8, 0, pwszTemp, -1, NULL, 0, NULL, NULL);
        CHAR *pszUTF8 = new CHAR[nLen+1];

WideCharToMultiByte(CP_UTF8, 0, pwszTemp, -1, pszUTF8 , nLen, NULL, NULL);
}

#4


gSoap貌似只支持Ansi和UTF-8格式吧。

#5


看客户端是否有问题,这里似乎没问题啊。

英文有乱码吗?