0
点赞
收藏
分享

微信扫一扫

otl插入sqlite中文乱码


网上找了一个转换 字符串的方法

 

string GBKToUTF8(std::string& strGBK)
{
string strOutUTF8 = "";
wchar_t * str1;
int n = MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, NULL, 0);
str1 = new WCHAR[n];
MultiByteToWideChar(CP_ACP, 0, strGBK.c_str(), -1, str1, n);
n = WideCharToMultiByte(CP_UTF8, 0, str1, -1, NULL, 0, NULL, NULL);
char * str2 = new char[n];
WideCharToMultiByte(CP_UTF8, 0, str1, -1, str2, n, NULL, NULL);
strOutUTF8 = str2;
delete[]str1;
str1 = NULL;
delete[]str2;
str2 = NULL;
return strOutUTF8;
}

 

在提交到数据库操作时用这个方法转换一下就可保存成中文了

void insert()
{
otl_stream
o(50, "insert into test_tab values(:f1<int>,:f2<char[31]>)",
db );
char tmp[32];

string tt="姓名bhgy765_+00";
string ts=GBKToUTF8(tt);

strcpy(tmp,ts.c_str());

o<<1<<tmp;


}

举报

相关推荐

0 条评论