|
阅读:5426回复:2
急急急!STRINGZ_TO_NPVARIANT不能返回中文字符串?
已知一个方法,调用结束时将返回一个字符串,用的就是
STRINGZ_TO_NPVARIANT(szResult, *result); szResult是个NPN_MemAlloc开辟的char型数组缓冲区,如果给它填入的内容是英文,返回正确,在网页里alert也看到正确结果,如果含有中文,可能alert个空的框框,要么截止中文就不显示了。 请教大侠,是何原因,我开发的np插件,用作公司内部axtivex的容器,以运行在firefox下,欢迎相互交流!尤其期待对此问题的请教喔!俺的Q:1780529162 |
|
|
1楼#
发布于:2011-02-17 17:33
转换不了哦。 怎么转都转不了, 郁闷了???
求解啊? 可以MessageBox 写文件也正常,但用了段代码后还是乱码。 cout.clear();
cout.str("中文");
LPCWSTR lpcwszStr = (WCHAR *)cout.str().c_str();
DWORD dwNum = WideCharToMultiByte(CP_UTF8, NULL,lpcwszStr,-1,NULL,0,NULL,FALSE);
LPSTR psText = (LPSTR)NPN_MemAlloc(dwNum);
//ZeroMemory( (void *)p, dwNum );
WideCharToMultiByte(CP_UTF8, NULL, lpcwszStr, -1, psText, strlen(cout.str().c_str()), NULL, FALSE);
//fwrite(lpcwszStr, strlen(dwNum), 1, fp);
fwrite(psText, dwNum, 1, fp);
fclose(fp);
//memcpy(result, buffer, strlen(szbuf)));
NPUTF8 *utf8_chars = static_cast<NPUTF8*>(NPN_MemAlloc(dwNum));
memcpy(utf8_chars, psText, dwNum);
STRINGZ_TO_NPVARIANT(utf8_chars, *result);
NPN_MemFree(psText); |
|
|
2楼#
发布于:2011-02-17 17:33
转换成UTF8之后再返回。
|
|