用C++ API读到的字段值中文显示乱码

DolphinDB database的表里一个字段,值有中文也有英文,读出来,英文正常中文是乱码,有没有这种可能? 后端存的是Utf8,c++ api用的是操作系统的默认编码?(比如我机器默认是GBK) ,c++集成开发环境是VS2017。
另外问一下,连接数据库的时候,能不能指定编码?

请先 登录 后评论

1 个回答

logger


DolphinDB的默认编码是UTF-8。可以在c++中用MultiByteToWideChar()函数映射一个字符串到一个宽字符(unicode)的字符串。代码如下:


wchar_t *T2OLE(std::string raw){
    const char * s = raw.c_str();
    int unicodeLen = ::MultiByteToWideChar(CP_UTF8, 0, s, -1, NULL, 0);
    wchar_t *pUnicode;
    pUnicode = new wchar_t[unicodeLen + 1];
    memset(pUnicode, 0, (unicodeLen + 1) * sizeof(wchar_t));
    ::MultiByteToWideChar(CP_UTF8, 0, s, -1, (LPWSTR)pUnicode, unicodeLen);
    return pUnicode;
}


也可以在select时用DolphinDB内置函数convertEncode进行转换。


请先 登录 后评论