VC++6.0 连接数据库MySQL 中文显示乱码
百度伊始,各种方法均指向MySQL库、表等的字符集设定。
例如在my.ini文件中添加下列内容:
[mysqld]
default-character-set = utf8
[client]
loose-default-character-set = utf8
还有在数据库里用语句来更改的:
set names utf8
有说用gbk的,有说用gb2312的,有说用utf8的….
然而无论我怎么改,都是乱码。
MySQL这边的数据能正常显示中文,VC++6.0 这边的程序文本框也能正常显示中文。但一连接就乱码了。。。
想来问题只能是出在连接上了。
无论是查询、录入、修改、删除,都需要在数据库连接句柄后面加上设置字符编码的语句。
当MySQL设置的字符是utf8时,VC++6.0这边设置成gbk、gb2312都可以正常显示中文,但VC++6.0程序里设置成utf8,就乱码了,而且原本的一个汉字字符会变成两个汉字字符(乱码)。
按以下代码设置后,能正常显示。
MYSQL mysql; //数据库连接句柄
mysql_init (&mysql);
if(!mysql_real_connect(&mysql,"127.0.0.1","root","","student",3306,NULL,0))
{
AfxMessageBox("数据库连接失败");
return ;
}
else
{
// AfxMessageBox("数据库连接ok");
}
/*↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓重点就在这↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓*/
//设置字符编码
mysql_query(&mysql, "SET NAMES ‘gbk’");
/*↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑重点就在这↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑*/
—————————————————————————-
附上数据库所设置的字符集查询语句
show variables like "%char%";
发表评论