C语言连接mysql数据库查询中文的数据表乱码问题
来源:互联网 发布:英汉翻译软件语音 编辑:程序博客网 时间:2024/05/31 06:21
用C语言调用mysql的API函数查询数据库中文的表时候显示乱码:
实例参考博客:
http://blog.csdn.net/linux_ever/article/details/50651513
源代码:
/*************************************************************************> File Name:mysql_test.c > Author: > Mail: > Created Time: 2016年02月11日 星期四 10时45分31秒 ************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql/mysql.h>int main(){ int ret = 0; MYSQL mysql; MYSQL * connect = NULL; connect = mysql_init(&mysql); if(connect == NULL){ ret = mysql_errno(&mysql); printf("mysql_init error, %s\n", mysql_error(&mysql)); return ret; } printf("mysql_init ok...\n"); //connect = mysql_real_connect(connect, NULL, "root", "yxk", "mydb61", 0, NULL, 0); connect = mysql_real_connect(connect, "localhost", "root", "yxk", "ch11", 0, NULL, 0); if(connect == NULL){ ret = mysql_errno(&mysql); printf("mysql_real_connect error, err is: %s\n", mysql_error(&mysql)); return ret; } printf("mysql_real_connect ok...\n"); ret = mysql_query(&mysql, "set names utf8"); if(ret != 0){ printf("mysql_query error\n"); return ret; } const char * query = "select * from teacher"; ret = mysql_query(connect, query); if(ret != 0){ printf("mysql_query error\n"); return ret; } MYSQL_RES *result = mysql_store_result(&mysql); if(result == NULL){ printf("mysql_store_result error\n"); return -1; } int field_num = mysql_field_count(&mysql); //表头 MYSQL_FIELD * fields = mysql_fetch_fields(result); int i = 0; printf("-------------------------------------------------------------\n"); for(i= 0; i < field_num; i++){ printf("%s \t", fields[i].name); } printf("\n---------------------------------------------------------------\n"); //表内容 MYSQL_ROW row = NULL; while(row = mysql_fetch_row(result)){ for(i= 0; i < field_num; i++){ printf("%s \t", row[i]); } printf("\n"); } mysql_free_result(result);//释放内存 mysql_close(connect); printf("mysql_close...\n"); return ret;}运行结果:
解决办法:
需要在查询之前先设置查询的属性,设置字符集为utf8;
mysql_query(&mysql, "set names utf8");
解决之后的源代码:
/*************************************************************************> File Name:mysql_test.c > Author: > Mail: > Created Time: 2016年02月11日 星期四 10时45分31秒 ************************************************************************/#include <stdio.h>#include <stdlib.h>#include <string.h>#include <mysql/mysql.h>int main(){ int ret = 0; MYSQL mysql; MYSQL * connect = NULL; connect = mysql_init(&mysql); if(connect == NULL){ ret = mysql_errno(&mysql); printf("mysql_init error, %s\n", mysql_error(&mysql)); return ret; } printf("mysql_init ok...\n"); //connect = mysql_real_connect(connect, NULL, "root", "yxk", "mydb61", 0, NULL, 0); connect = mysql_real_connect(connect, "localhost", "root", "yxk", "ch11", 0, NULL, 0); if(connect == NULL){ ret = mysql_errno(&mysql); printf("mysql_real_connect error, err is: %s\n", mysql_error(&mysql)); return ret; } printf("mysql_real_connect ok...\n"); ret = mysql_query(&mysql, "set names utf8"); if(ret != 0){ printf("mysql_query error\n"); return ret; } const char * query = "select * from teacher"; ret = mysql_query(connect, query); if(ret != 0){ printf("mysql_query error\n"); return ret; } MYSQL_RES *result = mysql_store_result(&mysql); if(result == NULL){ printf("mysql_store_result error\n"); return -1; } int field_num = mysql_field_count(&mysql); //表头 MYSQL_FIELD * fields = mysql_fetch_fields(result); int i = 0; printf("-------------------------------------------------------------\n"); for(i= 0; i < field_num; i++){ printf("%s \t", fields[i].name); } printf("\n---------------------------------------------------------------\n"); //表内容 MYSQL_ROW row = NULL; while(row = mysql_fetch_row(result)){ for(i= 0; i < field_num; i++){ printf("%s \t", row[i]); } printf("\n"); } mysql_free_result(result);//释放内存 mysql_close(connect); printf("mysql_close...\n"); return ret;}
运行结果为:
0 0
- C语言连接mysql数据库查询中文的数据表乱码问题
- c语言连接mysql中文显示乱码问题-解决方案
- MFC中ODBC连接MySQL数据库查询出的中文显示为乱码的问题
- Hibernate连接MySQL数据库中文乱码问题
- MyEclipse连接MySQL数据库中文乱码问题
- java连接mysql数据库时有关中文乱码的问题
- ASP.net连接mysql数据库中文乱码问题的解决方法
- C语言连接MySQL中文问题
- Hibernate连接MySQL的中文乱码问题:
- C语言查询数据库返回结果中文乱码
- PHP连接MySQL查询结果中文显示乱码问题
- Hibernate MySQL的中文乱码问题--中文关键字查询数据库获取为null
- mysql数据库中文乱码问题的解决
- 有关MySQL数据库中文乱码的问题
- 解决MySQL数据库的中文乱码问题
- MySQL数据库中文乱码的问题
- 关于mysql数据库的中文乱码问题
- 树莓派上的mysql数据库中文乱码问题
- docker 学习笔记 -----如何批量删除的已经处于停止状态的容器
- Linux进程共享通信 -- mmap实现
- BZOJ1117 POI2009 救火站
- <LeetCode OJ> 290. Word Pattern
- Linux服务管理命令
- C语言连接mysql数据库查询中文的数据表乱码问题
- Volley get请求上传中文参数,后台接收到的是乱码的解决办法
- 1. 判断用户输入是否符合预期的循环
- Java学习笔记5-泛型
- Qt多线程事件管理的正确打开方式
- Linux 网络命令集锦
- 把cocos2dx 2.2的项目移植到 cocos2dx 3.8
- JavaTest
- hdu 5366 The mook jong【递推】【思维】