解决方法:在查询语句前加入如下代码,有两种方式:
1)
if (!mysql_set_character_set(&conn, "utf8"))
{
printf("New client character set: %s\n", mysql_character_set_name(&conn));
}
printf("%s\n","设置字符格式为中文" );
2)
mysql_query(&conn, "SET NAMES utf8;");
完整代码如下:
#ifndef __LCC__
#define __LCC__
#endif
#include <stdio.h>
#include <stdlib.h>
#include "mysql.h"
int main(int argc, char **argv) {
MYSQL mysql_conn; /* Connection handle */
MYSQL_RES *mysql_result; /* Result handle */
MYSQL_ROW mysql_row; /* Row data */
int f1, f2, num_row, num_col;
if (!mysql_set_character_set(&mysql_conn, "utf8"))
{
printf("New client character set: %s\n", mysql_character_set_name(&mysql_conn));
}
if (mysql_init(&mysql_conn) != NULL) {
if (mysql_real_connect(
&mysql_conn, "localhost", "root",
"密码", "数据库名称", MYSQL_PORT, NULL, 0) != NULL){
// char *sql="set names utf8;";
// mysql_query(&mysql_conn,sql);
if (mysql_query(
&mysql_conn,
"select * from EMPLOYEE limit 10") == 0) {
mysql_result = mysql_store_result(&mysql_conn);
num_row = mysql_num_rows(mysql_result);
num_col = mysql_num_fields(mysql_result);
for (f1 = 0; f1 < num_row; f1++) {
mysql_row = mysql_fetch_row(mysql_result);
for (f2 = 0; f2 < num_col; f2++)
printf(
"[Row %d, Col %d] ==> [%s]\n",
f1+1, f2+1, mysql_row[f2]);
}
} else
printf("Query fails\n");
} else {
int i = mysql_errno(&mysql_conn);
//const *s = mysql_error(&mysql_conn);
//printf("Connection fails(ERROR %d): %s\n", i, s);
}
} else
printf("Initialization fails\n");
mysql_free_result(mysql_result);
mysql_close(&mysql_conn);
return 0;
}