怎么用C++向MYSQL插入UNICODE字符串
如何用C++向MYSQL插入UNICODE字符串?
官方给的C API函数是
而我想要的是类似这样的函数
------------------------------------------------------------------------------------------------------------------------
假如我要插入这样的字符串"ص"
对于
我试过2种方法
一种是直接将"ص"字符串赋值给char*类型的tmp2中,结果提示
INSERT INTO temp (tmp1) VALUES (?) 出错
第二种方法是用WideCharToMultiByte将"ص"字符串转换成2倍长度的char*, 然后再将其赋值给tmp2,结果错误提示也是INSERT INTO temp (tmp1) VALUES (?) 出错
------------------------------------------------------------------------------------------------------------------------
请问我应该怎么做才能实现类似如下函数的这样的功能?
谢谢!
------解决思路----------------------
两个方法:
1,转utf-8再存入.
2,建表字段加上binary,然后sql语句也使用binary。
------解决思路----------------------
w_char* 转成 char* 再存啊
官方给的C API函数是
int mysql_real_query(MYSQL *mysql, const char *query, unsigned long length)
而我想要的是类似这样的函数
int mysql_real_query(MYSQL *mysql, const wchar_t *query, unsigned long length)
------------------------------------------------------------------------------------------------------------------------
假如我要插入这样的字符串"ص"
对于
INSERT INTO temp (tmp1) VALUES (tmp2)
我试过2种方法
一种是直接将"ص"字符串赋值给char*类型的tmp2中,结果提示
INSERT INTO temp (tmp1) VALUES (?) 出错
第二种方法是用WideCharToMultiByte将"ص"字符串转换成2倍长度的char*, 然后再将其赋值给tmp2,结果错误提示也是INSERT INTO temp (tmp1) VALUES (?) 出错
------------------------------------------------------------------------------------------------------------------------
请问我应该怎么做才能实现类似如下函数的这样的功能?
int mysql_real_query(MYSQL *mysql, const wchar_t *query, unsigned long length)
谢谢!
------解决思路----------------------
两个方法:
1,转utf-8再存入.
2,建表字段加上binary,然后sql语句也使用binary。
------解决思路----------------------
w_char* 转成 char* 再存啊
//Unicode编码转为多字节编码
bool UnicodeToMB(vector<char>& pmb, const wchar_t* pun, int32 uLen)
{
// convert an widechar string to Multibyte
int32 MBLen = WideCharToMultiByte(CP_ACP, 0, pun, uLen, NULL, 0, NULL, NULL);
if (MBLen <=0)
{
return false;
}
pmb.resize(MBLen);
int nRtn = WideCharToMultiByte(CP_ACP, 0, pun, uLen, &*pmb.begin(), MBLen, NULL, NULL);
if(nRtn != MBLen)
{
pmb.clear();
return false;
}
return true;
}