注册 登录
编程论坛 C++教室

LPWSTR 显示乱码

阿呆Clq 发布于 2016-03-17 13:48, 3837 次点击
程序代码:

void parseDriverInfo(DRIVER_INFO_2W *pdinfo, v8::Handle<v8::Object> result_pdinfo)
    {  
        MY_NODE_MODULE_ISOLATE_DECL
#define ADD_V8_STRING_PROPERTY(name, key) if((pdinfo->##key != NULL) && (*pdinfo->##key != L'\0'))    \
        { \
        result_pdinfo->Set(V8_STRING_NEW_UTF8(#name), V8_STRING_NEW_2BYTES((uint16_t*)pdinfo->##key)); \
    }
            ADD_V8_STRING_PROPERTY(configFile, pConfigFile);

#undef ADD_V8_STRING_PROPERTY

        result_pdinfo->Set(V8_STRING_NEW_UTF8("namex"), V8_STRING_NEW_2BYTES((uint16_t*)pdinfo->pName)); \\只要包含中文就会是乱码,部分英文能正常显示
    }
1 回复
#2
天使梦魔2016-03-17 16:56
你复制这些代码的时候自己知道是什么意思吗?
LPWSTR就是宽字符wchar_t
编译器一般默认是utf16
result_pdinfo的编码默认是什么?ascii还是utf?
而你那个函数从字面上看就是utf8的,它是参数需要utf8还是返回utf8?

宽字符一般通用版本 utf8   utf16   utf32
1