vc6.0运用mysql数据库中的编码所导致的乱码问题(接收和输出的编码必须要一致)

【编译中遇见的问题】

      ①在用vc 6.0去调用mysql中的数据时,出现中文乱码

      ②不明白mysql中的码制

【开始解决问题】

     ①打开mysql控制台



     ②开始展示自己




     ③打开vc 6.0(配置mysql环境在这里我就不哆嗦了)

走起.....在vc 6.0中复制下列代码,进行连接mysql和调用代码如下:

#include <Windows.h>
#include <stdio.h>
#include <stdlib.h>
#include <string.h>
#include <mysql.h> 
#include <iostream>
#pragma comment(lib, "ws2_32")  
#pragma comment(lib, "libmysql") 
using namespace std;

//-------------------------------------调用mysql数据库--------------------------------------。
void xian()
{
  //variables like 'char%'
  MYSQL mysql;
  MYSQL_RES *resultset;  
  MYSQL_ROW row;
  mysql_init(&mysql); 
  mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");
  cout<<"-------------------------------------------------------"<<endl;
  cout<<"| 性命 |"<<" 性别 |"<<" 年龄 |"<<" 诊断结果 |"<<" 处方 |"<<" 费用 |"<<" 时间 |"<<endl;
  cout<<"----------------------------------------------------------------"<<endl;
  if (!mysql_real_connect(&mysql, "localhost", "root", "123456", "zhaofulu", 3306, NULL, 0))  
  {  
  cout <<"\n数据库连接发生错误!";  
  }  
  else  
  { 
  if(mysql_query(&mysql,"select * from users"))
  {
  cout << "查询失败";
  }
  else
  {
  resultset = mysql_store_result(&mysql);// 获得结果集 
  if (mysql_num_rows(resultset) != NULL)  
  { 
  int numFields = mysql_num_fields(resultset);// 获得表中字段数
  
  while (row = mysql_fetch_row(resultset))  
  {  
  int i = 0;  
  for (i = 0; i < numFields; i++)  
  { 
  cout<<"| "<< row[i]<<"  ";
  }
  cout<<"|";
  cout<<endl;
  cout<<"----------------------------------------------------------------"<<endl; 
  }  
  }  
  else  
  {  
  cout<<"\n无查询结果!";  
  }  
  cout<<endl;
  
  }
  }
  
}
//---------------------------数据库的连接------------------------------。
int main()
{
    const char user[] = "root";         //username
    const char pswd[] = "123456";         //password
    const char host[] = "localhost";    //or"127.0.0.1"
    const char table[] = "zhaofulu";        //database
    unsigned int port = 3306;            //server port        
    MYSQL mysql;
    mysql_init(&mysql);
    if(mysql_real_connect(&mysql,host,user,pswd,table,port,NULL,0))
    {
        cout<<"connect succeed!"<<endl; 
xian();
    }
    else
    {
        cout<<"connect failed!"<<endl;
}
    mysql_close(&mysql);//断开连接
    return 0;
}

    ③运行vc 6.0           

【问题出现】

       运行vc 6.0之后的乱码现象截图:



    出现乱码现象,没有像mysql中预先输入显示的效果(此时很是纠结)

    这时你开始研究代码,开始查资料,得到的结果都一样:编码问题

    这时你开始把代码中的一行代码挑了出来(其他都研究懂了,就剩下这一条):

    mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");//必须要在本函数全局定义 

    你可能会理解这是要让此函数中的所有输入和输出都以编码为utf8的格式进行

【开始解决问题】

 打开mysql控制台(查看所建的zhaofulu数据库的编码属性)


   zhaofulu数据库的编码属性为gbk

   ②在查看在zhaofulu下的user表的所有属性



所以把代码 mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "utf8");

改成 mysql_options(&mysql, MYSQL_SET_CHARSET_NAME, "latin1");

【再次运行vc 6.0】




【另一种方法】:

在mysql控制台上用命令:set character_set_client=gbk    进行编码修改


收集:http://blog.csdn.net/ACMAIN_CHM/article/details/4174186


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值