急急急!STRINGZ_TO_NPVARIANT不能返回中文字符串?

阅读:4664回复:2
2011-02-17 17:33
写私信
楼主#
已知一个方法,调用结束时将返回一个字符串,用的就是
STRINGZ_TO_NPVARIANT(szResult, *result);
szResult是个NPN_MemAlloc开辟的char型数组缓冲区,如果给它填入的内容是英文,返回正确,在网页里alert也看到正确结果,如果含有中文,可能alert个空的框框,要么截止中文就不显示了。

请教大侠,是何原因,我开发的np插件,用作公司内部axtivex的容器,以运行在firefox下,欢迎相互交流!尤其期待对此问题的请教喔!俺的Q:1780529162
2011-02-17 17:33
写私信
1楼#
转换成UTF8之后再返回。
2011-02-17 17:33
写私信
2楼#
转换不了哦。 怎么转都转不了, 郁闷了???
求解啊?
可以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);