VC 6.0 連線mysql 亂碼處理
阿新 • • 發佈:2019-02-06
使用VC6.0連線mysql的時候,在輸出中文時,會出現亂碼,可以用下面的函式解決:
mysql_set_character_set(myData,"gb2312"); //這個是用在linux 下的,
VC6.0下用這個: ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gb2312");//來保證你字碼, 要加重記住.沒這個設定寫到資料mysql裡就是亂碼了, 漢字就是亂碼
改過之後的程式碼如下:
#include <malloc.h> #include <stdio.h> #include <winsock.h> #include "mysql.h" #pragma comment( lib, "libmysql.lib") void main() { char SqlText[256] = ""; unsigned char buf[6]; MYSQL mysql; MYSQL_RES *res = NULL; MYSQL_FIELD * fd = NULL; MYSQL_ROW row; int i = 0; mysql_init( &mysql ); mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "gb2312"); if ( !mysql_real_connect( &mysql, "localhost", "root", "1111", "spider", 3306, NULL, 0) ) { puts("資料庫連線失敗"); mysql_close( &mysql ); return FALSE; } else { puts("資料庫連線成功"); /* sprintf( SqlText, "insert into animals(name, kg) values ('chicken',6), ('dog', 4)"); //insert失敗 if ( mysql_query( (MYSQL *)&mysql, SqlText ) ) { puts("Can't insert data to table"); printf("%s\n", mysql_error(&mysql)); mysql_close( &mysql ); return FALSE; } */ sprintf( SqlText, "select * from category"); //進行資料檢索 if ( !mysql_query( (MYSQL *)&mysql, SqlText )) { res = mysql_store_result( &mysql ); i = (int)mysql_num_rows( res ); printf("Query: %s\n%d records found:\n", SqlText, i ); //輸出各欄位名 for ( i=0; fd = mysql_fetch_field(res); i++ ) { printf("%-6s\t", fd->name ); } puts(""); //依次讀取各條記錄 while ( row = mysql_fetch_row(res) ) { printf( "%-6s\t%-6s\t%-6s\n",row[0],row[1],row[2] ); } mysql_free_result( res ); } else { mysql_close( &mysql ); return FALSE; } } mysql_close(&mysql); return TRUE; }