我正在try 将一个字符串插入到我的MariaDB数据库中,该字符串包含一个大于128的Unicode字符,即177,±
.
wchar_t wcs = L"INSERT INTO text(drawing, eID, txt) VALUES(9,14063,'\261\065\061\067\071')";
使用wctombs
:
int ret;
ret = wctombs(querybuffer, wcs, 60);
ret
是-1,这显然意味着有一个宽字符与有效的多字节字符不对应.
我已经按照John Bollinger的建议修改了我的代码(非常感谢):
while(txt[i]) { c=cleaveMControl(txt,&i,j); if(c){ if(c<128) query[j++]=c; else{ query[j++]=92; query[j++]=92; sprintf(query+j,"u00%x",c); j=strlen(query); } } } query[j++]=39; query[j++]=41; query[j++]=59; query[j]=0; mysql_query(sqlconnect,query);
这会产生以下结果:
MariaDB [D8]> select * from text where eID=14063;
+---------+-------+------------+
| drawing | eID | txt |
+----------+-------+------------+
| 9 | 14063 | \u00b15179 |
+---------+-------+------------+
我预计会看到‘±5179’.