天天看點

mysql 函數結果 亂碼_資料庫mysql中文顯示亂碼問題。指令行直接select *from student;顯示不亂碼,但是通過函數擷取結果集亂碼...

#include#include"mysql.h"intmain(void){MYSQL*mysql=NULL;intret=0;//初始化//MYSQL*mysql_init(MYSQL*mysql)//unsignedintmysql_errno(MYSQL*mysql)mysql=mysql_init(NUL...

#include #include "mysql.h"int main(void){MYSQL *mysql = NULL;int ret = 0;//初始化//MYSQL *mysql_init(MYSQL *mysql) //unsigned int mysql_errno(MYSQL *mysql) mysql = mysql_init(NULL);if (mysql == NULL) {ret = mysql_errno(mysql);printf("init err: %d\n", ret);return ret;}printf("init ok...\n");//連接配接資料庫//MYSQL *mysql_real_connect(MYSQL *mysql, const char *host, const char *user, const char *passwd, const char *db, unsigned int port, const char *unix_socket, unsigned long client_flag) mysql = mysql_real_connect(mysql, "localhost", "root", "123456", "mydb61", 0, NULL, 0);if (mysql == NULL) {ret = mysql_errno(mysql);printf("mysql_real_connect err: %d\n", ret);return ret;}printf("connect ok...\n");//執行SQL語句//int mysql_query(MYSQL *mysql, const char *query) char *psql = "select * from emp";ret = mysql_query(mysql, psql);if (ret != 0) {printf("mysql_query err: %d\n", ret);return ret;}//擷取結果集//MYSQL_RES *mysql_store_result(MYSQL *mysql) MYSQL_RES *result = NULL;result = mysql_store_result(mysql);if (result == NULL) {ret = mysql_errno(mysql);printf("mysql_store_result err: %d\n", ret);return ret;}//解析結果集,提取資料 //MYSQL_ROW mysql_fetch_row(MYSQL_RES *result) MYSQL_ROW row;//typedef char ** MYSQL_ROW;while ((row = mysql_fetch_row(result))) {printf("%s\t%s\t%s\t%s\t%s\t%s\t%s\t%s\n", row[0], row[1], row[2], row[3], row[4], row[5], row[6], row[7]);}//釋放結果集//void mysql_free_result(MYSQL_RES *result) mysql_free_result(result);//關閉//void mysql_close(MYSQL *mysql)mysql_close(mysql);printf("close ok...\n");printf("haha not enough...\n");return 0;}

//加上下面這段就可以解決亂碼問題,但我還是不太明白。上面的查詢結果不是已經顯示是utf8了嗎?

ret=mysql_set_character_set(mysql,"utf8");

80 if(ret!=0)

81 {

82 return ret;

83 }

84 printf("set_character ok...\n");

展開