编程查询mysql中文乱码问题
2014-11-07 10:34
351 查看
众所周知,utf8兼容中文是最好的,因为这种编码中,一个汉字占用3个字节,空间更大,所以能存储的编码更多。当然,也浪费了一点点的空间。不过这是十分值得的。
我们都知道,使用命令行($mysql -u root -p的方式 )登录mysql时,select如果出现乱码,那么需要对mysql服务器设置字符集,此时select是正常的。但是,如果我们编写程序调用API对mysql查询时,对于中文字段,仍旧会出现很多"?????"之类的乱码。为啥?
原因就在于当我们连接mysql后,没有指定字符集,故而使用默认的字符集(不知道是什么,但肯定不是utf8)。
那么我们如何指定字符集呢?
答案是:调用mysql_set_character_set()函数。注意:这是mysql 5.0.7之后才有的函数。
下面是一个经典的C连接代码块:
int initDB(MYSQL *ms)
{
mysql_init(ms);
if(!mysql_real_connect(ms, "192.168.1.170", "likai", "wolegequ", "myDB", 3306, NULL, 0))
{
printf("cannot connect to MySql server, ErrInfo:[%s]!\n", mysql_error(ms));
return -1;
}
/* 设置字符集(DB中设置了字符集只能保证在mysql中显示正确,并不能保证查询获得的结果编码正确,故此处需设置) */
if (mysql_set_character_set(ms, "utf8" ))
{
printf("Set charset err,Info:[%s].\n", mysql_error(ms)) ;return -1;
}
return 0;
}经过上面的调用后,中文结果的返回,应该就是正常了(这段代码本人摘自曾经的项目,稍改即可用)。
我们都知道,使用命令行($mysql -u root -p的方式 )登录mysql时,select如果出现乱码,那么需要对mysql服务器设置字符集,此时select是正常的。但是,如果我们编写程序调用API对mysql查询时,对于中文字段,仍旧会出现很多"?????"之类的乱码。为啥?
原因就在于当我们连接mysql后,没有指定字符集,故而使用默认的字符集(不知道是什么,但肯定不是utf8)。
那么我们如何指定字符集呢?
答案是:调用mysql_set_character_set()函数。注意:这是mysql 5.0.7之后才有的函数。
下面是一个经典的C连接代码块:
int initDB(MYSQL *ms)
{
mysql_init(ms);
if(!mysql_real_connect(ms, "192.168.1.170", "likai", "wolegequ", "myDB", 3306, NULL, 0))
{
printf("cannot connect to MySql server, ErrInfo:[%s]!\n", mysql_error(ms));
return -1;
}
/* 设置字符集(DB中设置了字符集只能保证在mysql中显示正确,并不能保证查询获得的结果编码正确,故此处需设置) */
if (mysql_set_character_set(ms, "utf8" ))
{
printf("Set charset err,Info:[%s].\n", mysql_error(ms)) ;return -1;
}
return 0;
}经过上面的调用后,中文结果的返回,应该就是正常了(这段代码本人摘自曾经的项目,稍改即可用)。
相关文章推荐
- python查询mysql中文乱码问题
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- mysql 数据查询时 中文乱码问题 以 php 为例
- Qt查询MYSQL中文乱码问题
- JDBC从mysql查询中文乱码问题
- mysql默认编码设置成gbk,解决dos下查询中文乱码的问题!
- MySql中文查询乱码,问号问题
- MySQL中文查询乱码问题排查方法
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- MySQL字符集中文乱码终极解决方案和mysql查询中文问题解决方法[转贴]
- Hibernate MySQL的中文乱码问题--中文关键字查询数据库获取为null
- SQL Manager for Mysql 查询中文乱码问题
- python查询mysql中文乱码问题
- mysql查询时传入中文时的乱码问题
- MySql 查询语句中包含中文,日志打印为乱码问题解决
- 有关ssh连接linux服务器后在mysql查询后输出中文结果乱码的的问题
- Java使用PreparedStatement查询MySql中文乱码问题
- MySQL 中文显示乱码以及中文查询条件返回0条结果的问题解决
- python查询mysql中文乱码问题