`

解决中文在odbc和mysql下乱码问题

阅读更多
1、出现乱码后,要想到字符集设置
2、在odbc配置设置没有作用
3、VC下Mysql配置语句:
int mysql_options(MYSQL *mysql, enum mysql_option option, const char *arg)
注意事项:
(1)能用于设置额外连接选项并且影响一个连接的行为。
(2)这个函数可以被多次调用来设置多个选项。
(3mysql_options()应该在mysql_init()之后和mysql_connect()或mysql_real_connect()之前调用。
(4)option参数是你想要设置的选项;arg参数是选项的值。如果选项是一个整数,那么arg应该指向整数值。
4.PHP里Mysql的配置语句:
  mysql_query("set names 'gbk'");//这就是指定数据库字符集,一般放在连接数据库后面就行了,对汉语简体和繁体都可以

举例说明:
VC下完整的例子如下:
#include <iostream>
#include <windows.h>
#include <cstdlib>
#include <cstdio>
#include <mysql.h>
#pragma comment(lib, "libmysql.lib")
using namespace std;
MYSQL * conn;
int main()
{
char     host[] = "localhost";
char username[] = "root";
char password[] = "123";
    char database[] = "school";
MYSQL_RES * res_set;
MYSQL_ROW row;
unsigned int i, ret;
MYSQL_FIELD * field;
unsigned int num_fields;
//mysql_init(MYSQL *)
// return values: An initialized MYSQL* handle.
//NULL if there was insufficient memory to allocate a new object.    
conn = mysql_init(NULL);
if(conn != NULL)
   ;//cout << "mysql_init success!" << endl;
else printf("failed !\n");
ret = mysql_options(conn, MYSQL_SET_CHARSET_NAME, "gb2312");
    if(ret == 0)
   ;//cout << "mysql_options success!" << endl;
else printf("failed !\n");
if(mysql_real_connect(conn,
       host,
       username,
       password,
       database,
       0, NULL, 0) != NULL)
        ;//cout << "mysql_real_connect success!" << endl;
else printf("failed !\n");

//printf("char set %s\n", mysql_character_set_name(conn));
mysql_query(conn, "insert into teacher values(7, 'fifth', 'shenzhen', '1986-6-6')");
printf("insert affect %d sentences\n", mysql_affected_rows(conn));
if(mysql_query(conn,"SELECT * FROM teacher")) //查询成功返回0    failed here!
   printf("mysql_query failed!\n");
res_set = mysql_store_result(conn);          //失败返回NULL
if(res_set == NULL)
   printf("res_set is null\n");
/*
while((field = mysql_fetch_field(res_set)))
{
   printf("field name %s\n", field->name);
}
*/
num_fields = mysql_num_fields(res_set);
for(i = 0; i < num_fields; i++)
{
   field = mysql_fetch_field_direct(res_set, i);
   printf("%s\t\t", field->name);
}
printf("\n");
while ((row = mysql_fetch_row(res_set)) != NULL)
{
   for (i = 0; i < mysql_num_fields(res_set); i ++)
   {
    printf("%s\t\t",row[i] != NULL ? row[i] : "NULL");
   }
   printf("\n");
}
mysql_close(conn);
return 0;
}
分享到:
评论
1 楼 zjhzjf000 2010-09-09  
[/size][size=small][color=yellow][/color]

相关推荐

    Mysql中文乱码问题完美解决方案.doc

    解决mysql乱码问题。主要是数据库查询出数据中文为问号???的问题。

    mysql中文乱码解决

    经常更换虚拟主机,而各个服务商的MYSQL版本不同,当导入数据后,总会出现乱码等无法正常显示的问题,查了好多资料,总结出自己的一点技巧

    mysql odbc字符集设置(中文显示乱码)

    在配置odbc源时,选上Read Options From my.cnf这一项 MySQL ODBC字符集设置 mysql数据库字符集为utf8,使用delphi7的adoquery查询出的结果显示乱码 odbc驱动版本3.51.15 处理如下: ---------------...

    asp+mysql+utf8 网页出现乱码问题的解决方法

    MYSQL是UTF8编码,但无论在网页中加多少UTF8的定义,显示的结果都还是会有一些小格子,而且SQL语句中用LIKE 中文,也查询不出来。反而定义为gb2312,显示完全正常。 conn.asp 网页顶部写 代码如下: &lt;&#37;@...

    asp MYSQL出现问号乱码的解决方法

    这样的问题是因为 数据库字符集,表字符集,字段字符集都设为:gbk_chinese_ci 注意数据库连接串里面的 Stmt=Set Names ‘GBK’ ,一定要有这一句。 下面是asp链接mysql的代码。请注意,后面有个GBK。这样就是...

    Oracle通过DBlink连接MySQL

    依赖包:mysql-connector-odbc-5.3.6-1.el6.x86_64.rpm和unixODBC,前置条件:Oracle和MySQL字符集需要一致,否则Oracle查询出来的数据是乱码。

    mysql转换为doc文档

    nativecat mysql语句直接转换为doc文档,方便数据库设计和维护。odbc数据源字符格式务必设置为gb2313,否则导致的字段备注中会出现乱码。

    sqlite3 -- 修改svn乱码异常

    它能够支持Windows/Linux/Unix等等主流的操作系统,同时能够跟很多程序语言相结合,比如 Tcl、C#、PHP、Java等,还有ODBC接口,同样比起Mysql、PostgreSQL这两款开源的世界著名数据库管理系统来讲,它的处理速度比...

    Wing FTP Server v6.0.9.zip

    还能提供管理员终端、任务计划、基于Web的管理端,基于Web的客户端和Lua脚本扩展等,此外,还支持可编程的事件, 计划任务, Lua脚本扩展, 虚拟文件夹, 上传下载比率分配, 磁盘容量分配, ODBC/Mysql存储账户, 多国语言...

    php手册PHP5研究室编无乱码版本chm

    作者和贡献者 I. 入门指引 1. 简介 2. 简明教程 II. 安装与配置 3. 安装前需要考虑的事项 4. Unix 系统下的安装 5. Mac OS X 系统下的安装 6. Windows 系统下的安装 7. PECL 扩展库安装 8. 还有问题? 9....

    SqlDbx 5.11专业版-无任何功能限制(中文版)

    支持的数据源有MSSQL/MYSQL/ODBC/DB2/ASE/SYBASE/ORACLE/PostgreSQL/Sqlite等数据源。能够同时操作打开多个数据库。 这个是SqlDbx 5.11专业版汉化和谐版,解除了各种限制 支持多窗口链接查询;支持Unicode编码,...

    汉化SqlDbx 5.11 和谐版

    支持的数据源有MSSQL/MYSQL/ODBC/DB2/ASE/SYBASE/ORACLE等数据源。能够同时操作打开多个数据库。 SqlDbx 5.11专业版汉化和谐版,解除各种限制 支持多窗口链接查询;支持Unicode编码,编辑器中汉字不会再出现乱码。...

    SqlDbx_5.11_Unicode_Zh-Cn 中文破解最新版

    支持的数据源有MSSQL/MYSQL/ODBC/DB2/ASE/SYBASE/ORACLE等数据源。能够同时操作打开多个数据库。 SqlDbx 5.11专业版汉化和谐版,解除各种限制 支持多窗口链接查询;支持Unicode编码,编辑器中汉字不会再出现乱码。...

    易语言程序免安装版下载

    修改高级表格支持库,解决在鼠标按下和抬起之间收到时钟周期事件的情况下,无法收到“被单击”事件的BUG。 3. 修改扩展界面支持库三,解决单击卷帘菜单后导致日期框不能弹出下拉窗口的BUG。 4. 修改XP风格支持库...

    《SQL数据库管理工具》(Richardson Software RazorSQL)v5.1.1/含注册机

    软件简介:RazorSQL 是数据库查询工具、SQL的编辑、数据库管理工具,可以通过ODBC,JDBC连接数据库,已经证实可以使用的数据库种类,达到了29种. RazorSQL is an SQL query tool, database browser, SQL ...

    SqlDbx 5.11汉化专业版 已和谐版

    支持的数据源有MSSQL/MYSQL/ODBC/DB2/ASE/SYBASE/ORACLE等数据源。能够同时操作打开多个数据库。 SqlDbx 5.11专业版汉化和谐版,解除各种限制 支持多窗口链接查询;支持Unicode编码,编辑器中汉字不会再出现乱码。...

    Java开发实战1200例(第1卷).(清华出版.李钟尉.陈丹丹).part3

    本书是第II卷,以开发人员在项目开发中经常遇到的问题和必须掌握的技术为中心,介绍了应用Java进行桌面程序开发各个方面的知识和技巧,主要包括Java语法与面向对象技术、Java高级应用、窗体与控件应用、文件操作...

Global site tag (gtag.js) - Google Analytics