`

解决中文在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中文乱码问题及其解决...4. **在MySQL命令行中指定字符集**:适用于临时性解决问题或者已经存在的数据库。 通过上述方法之一或组合使用,可以有效地解决MySQL中的中文乱码问题,提高数据的完整性和准确性。

    解决knime连接mysql数据库中文乱码

    在解决中文乱码问题时,我们需要将 MySQL 数据库的编码格式设置为 GBK,以确保中文数据的正确显示。在 MySQL 中,我们可以使用以下命令来修改编码格式: ```sql ALTER TABLE table_name CONVERT TO CHARACTER SET ...

    mysql中文乱码解决

    然而,在不同的服务器环境或MySQL版本之间迁移数据库时,常常会遇到中文乱码的问题。这种情况通常发生在从旧版本的MySQL(如4.x)迁移到新版本(如5.x)时。旧版本的MySQL对字符集的支持相对简单,而新版本引入了更...

    pb导入mysql5.0中中文乱码

    在使用 Pb 将数据导入到 MySQL 5.0 时,可以在 ODBC 连接选项中添加 set names 语句,以解决中文乱码问题。具体来说,可以在 connector options 中的 initial statement 中添加以下语句: set names gbk 这样,在...

    ASP连MySQL数据库乱码问题

    综上所述,解决ASP连接MySQL数据库时的乱码问题需要从多个角度考虑,包括但不限于数据库配置、ASP代码、文件编码、浏览器设置等。在调试过程中,逐个排查这些因素,往往能找出问题所在并修复。通过共享已验证的解决...

    SQLSERVER访问MYSQL表中文显示成乱码.pdf

    在本例中,使用的是MySQL 5.1.50-win32版本和ODBC 3.1版本,而这个版本的ODBC驱动可能会存在对某些字符集支持不足的问题,从而导致乱码现象。 为了解决这个问题,可以尝试升级ODBC驱动到5.1版本。这可能是因为ODBC ...

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

    在使用MySQL与ODBC进行数据交互的过程中,经常会遇到中文显示乱码的问题。这主要是因为客户端与服务器端的字符集设置不一致所导致的。本文将详细介绍如何解决MySQL通过ODBC连接时出现的中文乱码问题。 #### 二、...

    Powedesigner 导入 Mysql 以及反向 乱码及其解决方案

    通过上述步骤,可以有效解决PowerDesigner在处理MySQL数据库时的乱码问题,确保数据的准确性和一致性,提高数据库管理和开发的效率。此外,参考相关的博客文章和资源也能帮助用户更深入地理解这些问题及其解决方案,...

    mssql转mysql的odbc程序

    - **创建ODBC数据源**:在Windows操作系统中,通过“控制面板”的“管理工具”&gt;“ODBC数据源管理员”创建SQL Server和MySQL的ODBC数据源,配置相应的驱动程序和连接参数。 - **导出SQL Server数据**:使用SQL ...

    PB9写入非中文数据库的乱码问题

    在使用PowerBuilder 9(PB9)开发应用程序时,可能会遇到一个特定问题,即当向非中文数据库(如SQL Server)插入中文字符时,数据在第三方软件中显示为乱码。这个问题主要是由于PB9对Unicode支持不足导致的。本文提供...

    中文乱码问题

    当使用 PowerBuilder (简称 Pb) 工具导入数据到 MySQL 5.0 数据库时,如果源数据中的中文字符在导入后显示为乱码,这通常是因为 PowerBuilder 和 MySQL 之间的字符集设置不匹配造成的。 **解决方法**: 1. **配置 ...

    Java连MySQL乱码[参照].pdf

    在Java编程中,连接MySQL数据库并处理中文乱码是一个常见的挑战,尤其是在开发涉及多语言内容的应用时。本文将深入探讨如何解决这个问题。 首先,我们来看Java与MySQL的连接。使用JDBC(Java Database Connectivity...

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

    在ASP(Active Server Pages)开发的网页中,与MySQL数据库交互时可能会遇到字符编码问题,尤其是在涉及非ASCII字符,如中文字符时。标题和描述提到的问题主要集中在UTF8编码和GB2312编码的冲突上,导致网页显示乱码...

    odbc例子程序,支持unicode,xml方式调用

    此示例程序解决了这个问题,确保在数据的读取和写入过程中正确处理Unicode字符,从而避免乱码或数据丢失。 XML接口的引入,为数据交换提供了另一种灵活的方式。XML是一种自描述的、结构化的数据格式,易于解析和...

    记一次oracle通过dblink连接mysql实施

    总结起来,通过Oracle的DBLink连接MySQL虽然涉及多个层面的配置,但通过正确地识别和解决问题,如HSODBC问题、监听配置问题以及字符集设置,可以成功建立跨数据库的连接。在面对RAC这样的高可用性环境时,需要更细致...

    asp链接MySQL

    解决这个问题的方法是在连接数据库后,使用`SET NAMES`命令来设置字符集,如在方法一的代码中已经示例。 总结,ASP连接MySQL主要涉及以下步骤: 1. 安装MySQL ODBC驱动。 2. 创建ODBC数据源或在代码中直接构建连接...

    Oracle通过DBlink连接MySQL

    在实际操作中,务必注意字符集的匹配,避免因字符集不一致导致的数据乱码问题。此外,安全也是重要的考虑因素,确保敏感信息如用户名和密码的安全存储。在整个配置过程中,每一步都需要仔细检查和测试,确保每个环节...

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

    在ASP(Active Server Pages)中使用MYSQL数据库时,有时会遇到汉字显示为问号的乱码问题。这通常是由于字符编码不一致导致的。要解决这个问题,我们需要关注以下几个关键点: 1. **数据库字符集**: 数据库的默认...

Global site tag (gtag.js) - Google Analytics