免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 2701 | 回复: 5
打印 上一主题 下一主题

c + mysql 输出中文乱码, 求解决方案 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2009-03-05 22:00 |只看该作者 |倒序浏览
我用C API 连接mysql数据库,自己建了个测试的库,写了个查询语句,
但是发现里边的中文全变成了问号‘?’

代码如下:
/*我自己封装了c API中的函数,也就是加了出错处理,没有改变什么*/

  1. #include "mysql_proc.h"
  2. #include <stdio.h>

  3. int main()
  4. {
  5.         MYSQL *conn;
  6.         MYSQL_RES *res;
  7.         MYSQL_ROW row_data;
  8.        
  9.         unsigned long row_num, col_num;
  10.         int i, j;
  11.        
  12.         conn = Mysql_init(NULL);
  13.         Mysql_real_connect(conn, "localhost", "wolf", "wolf", "tteach", 0, NULL, 0);
  14.         Mysql_query(conn, "select * from student");
  15.         res = Mysql_store_result(conn);
  16.        
  17.         row_num = Mysql_num_rows(res);
  18.         col_num = Mysql_num_fields(res);
  19.        
  20.         printf("row:%lu        col:%lu\n", (unsigned long)row_num,  (unsigned long)col_num);
  21.         for(i = 0; i < row_num; ++i)
  22.         {
  23.                 row_data = Mysql_fetch_row(res);
  24.                 for(j = 0; j < col_num; ++j)
  25.                         printf("%s\t", row_data[j]);
  26.                        
  27.                 printf("\n");
  28.         }
  29.         Mysql_free_result(res);
  30.         Mysql_close(conn);
  31.        
  32.         return 0;
  33. }
复制代码

我是在终端下运行的,因为刚接触mysql,不知道该怎么弄,请各位大大指点一下,先谢谢了。。

论坛徽章:
0
2 [报告]
发表于 2009-03-05 22:22 |只看该作者

回复 #1 wolf711988 的帖子

请高手指点。。。

论坛徽章:
0
3 [报告]
发表于 2009-03-05 23:08 |只看该作者

回复 #2 wolf711988 的帖子

自己乱搞搞出来了..
先把字符集设为utf8,
最后还要在程序 中加了
Mysql_query(conn, "set names utf8"); /*没有这句,输出中文将乱码*/

虽然搞出来了,但是还是不理解为什么 要加上边的代码,不是都设置成utf8了吗?

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
4 [报告]
发表于 2009-03-06 09:02 |只看该作者
一个是存储状态,一个是环境状态。

论坛徽章:
0
5 [报告]
发表于 2009-03-06 16:14 |只看该作者
原帖由 枫影谁用了 于 2009-3-6 09:02 发表
一个是存储状态,一个是环境状态。

能不能详细点?

论坛徽章:
1
白银圣斗士
日期:2015-11-23 08:33:04
6 [报告]
发表于 2009-03-06 16:31 |只看该作者

回复 #5 wolf711988 的帖子

就好像你有人民币

你要用得到可以使用人民币的地方花,或是需要兑换成其它能那个地方花的币种来花。
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP