阅读:5052回复: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之后再返回。
|
|