sqlite3_open打开数据库失败 返回值14问题

  • Post author:
  • Post category:其他


原因:sqlite3_open第一个参数路径中有中文字符,而它只支持UTF-8编码,所以使数据库打开失败

解决:我在网上找的转码,先把路径转码。


CString MbcsToUtf8(const char *file)




{





CString str;




WCHAR   *pwchar=0;




CHAR    *pchar=0;




int len=0;




int codepage = AreFileApisANSI() ? CP_ACP : CP_OEMCP;




len=MultiByteToWideChar(codepage, 0, file, -1, NULL,0);




pwchar=new WCHAR[len];




if(pwchar!=0)




{





len = MultiByteToWideChar(codepage, 0, file, -1, pwchar, len);




if( len!=0 )




{





len = WideCharToMultiByte(CP_UTF8, 0, pwchar, -1, 0, 0, 0, 0);




pchar=new CHAR[len];




if(pchar!=0)




{





len = WideCharToMultiByte(CP_UTF8, 0, pwchar, -1, pchar, len,0, 0);




if(len!=0)




{





str=pchar;




}




delete pchar;




}




delete pwchar;




}




}




return str;




}



版权声明:本文为mail_cm原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。