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

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

阅读 2.5k
1 个回答

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进行转换。

撰写回答
你尚未登录,登录后可以
  • 和开发者交流问题的细节
  • 关注并接收问题和回答的更新提醒
  • 参与内容的编辑和改进,让解决方法与时俱进
推荐问题