1. 程式人生 > >VC 6.0 連線mysql 亂碼處理

VC 6.0 連線mysql 亂碼處理

使用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;
}