C++ 读写Mysql 数据库时,总是乱码, 数据库编码为 UTF8, C++客户端如果设为UTF8时,就是乱码,但C++客户端如果设为GB2312时,就没问题了。
原因再研究,如果有哪位大拿知道原因,还请告诉下。
int SCmysql::ConnMySQL(char *host, char * port, char * Db, char * user, char* passwd, char * charset, char * Msg)
{
if (mysql_init(&mysql) == NULL)
{
Msg = "inital mysql handle error";
return 1;
}
if (mysql_real_connect(&mysql, host, user, passwd, Db, 0, NULL, 0) == NULL)
{
Msg = "Failed to connect to database: Error";
return 1;
}
//mysql_query(&mysql, "SET NAMES GB2312");
if (mysql_set_character_set(&mysql, charset) != 0)
{
Msg = "mysql_set_character_set Error";
return 1;
}
return 0;
}
mysql_query(&mysql, "SET NAMES GB2312");
或
mysql_set_character_set(&mysql, charset)
连接后,设置下编码即可。