今天使用 mysql 编写服务端时遇到中文字符串无法插入数据库表的成员中,报错如下:
Incorrect string value: '\xB2\xE2\xCA\xD4\xB2\xE2...' for column 'Remark' at row 1
尝试了各种方案,用命令设置格式为 utf8 都不管用
直到使用以下指令:
MYSQL_RES* DBModuleMysql::QueryStore( const char * sql,bool noret,my_ulonglong* effect)
{
if( ! m_mysql ) return 0;
if( effect ) *effect = 0;
m_QueryCount ++;
if( 0 != mysql_real_query( m_mysql,sql,(unsigned long)strlen(sql) ) )
{
printf( "On Query: %s, Error: \n", sql );
printf( "%s\n", mysql_error(m_mysql) );
return NULL;
}
if( effect )
{
*effect = mysql_affected_rows( m_mysql );
}
if( noret )
{
return NULL;
}
m_QueryResCount ++;
return mysql_store_result(m_mysql);
}
在代码中使用:
m_pDBModule->QueryStore("set names gbk", true);
随后正常插入数据提示成功,使用 SQLyog 查看