|
楼主 |
发表于 2008-8-9 14:02:45
|
显示全部楼层
现在发现的问题估计在于数据库的字符集在变化,在mysql_real_connect之后调用了mysql_set_character_set(db,"utf8");我在某一个访问数据库的地方通过mysql_character_set_name获取字符集,运行过程中刚开始的时候一直返回正确的utf8,但是出问题的时候发现字符集变成了latin1了,代码如下:
const char *charset = mysql_character_set_name(db);
sprintf(tmpstr,"query_string: %s charset=%s\n",query,charset);
MYLOG_print(tmpstr); //1
rtv = mysql_real_query(db, query, n);
res_set = mysql_store_result(db);
charset = mysql_character_set_name(db);
sprintf(tmpstr,"after mysql_real_query charset=%s\n",charset);
MYLOG_print(tmpstr); //2
在1处打印结果为:
query_string: SELECT COUNT(*) FROM mgt.authentication charset=utf8
在2处打印结果为:
after mysql_real_query charset=latin1
为什么在同一个函数内部前后字符集发生了变化? 如果是代码问题,大概哪些调用会悄悄改变字符集呢? |
|