________________________________

From: He, Gang 
Sent: Wednesday, April 12, 2006 8:43 PM
To: '[EMAIL PROTECTED]'
Subject: Mysql C API character set

 

Hi,

 

I install MySQL server 4.1.12 in Redhat Linux in Japanese environment (
env LANG=ja_JP.UTF-8 ), 

I setup MySQL server utf8 character set, the configuration is as
follows:

[mysqld]

datadir=/var/lib/mysql

socket=/var/lib/mysql/mysql.sock

# Default to using old password format for compatibility with mysql 3.x

# clients (those using the mysqlclient10 compatibility package).

old_passwords=1

default-character-set=utf8

 

[mysql.server]

user=mysql

basedir=/var/lib

 

[mysqld_safe]

err-log=/var/log/mysqld.log

pid-file=/var/run/mysqld/mysqld.pid

 

Then, I start MySQL server, and type mysql command, the result is as
follows:

mysql> show variables like 'char%';

+--------------------------+----------------------------------------+

| Variable_name            | Value                                  |

+--------------------------+----------------------------------------+

| character_set_client     | utf8                                   |

| character_set_connection | utf8                                   |

| character_set_database   | utf8                                   |

| character_set_results    | utf8                                   |

| character_set_server     | utf8                                   |

| character_set_system     | utf8                                   |

| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |

+--------------------------+----------------------------------------+

7 rows in set (0.00 sec)

 

But, I write a sample code using MySQL C API 4.1.10, the code is as
follows:

int main(int argc, char* argv[])

{

    MYSQL    m_conn;

    MYSQL_RES   *res;

    MYSQL_ROW   row;

 

    mysql_init(&m_conn);

    mysql_real_connect(&m_conn, "localhost", "root", "123456", "mysql",
0, NULL, 0);

 

    mysql_query(&m_conn, "show variables like 'character_set_%'");

    res=mysql_store_result(&m_conn);

    while((row=mysql_fetch_row(res))!=NULL)

    {

       printf(row[0]); printf("\t"); printf(row[1]);

       printf("\n");

    }

 

    mysql_free_result(res);

    mysql_close(&m_conn);

    return 0;

}

The output result is as follows:

character_set_client    latin1

character_set_connection        latin1

character_set_database  utf8

character_set_results   latin1

character_set_server    utf8

character_set_system    utf8

character_sets_dir      /usr/local/mysql/share/mysql/charsets/

 

I want to why character_set_client , character_set_connection and
character_set_results in the output result be latin1, not utf8 ?

If I want to change MySQL C API default value when the application call
mysql_real_connect() function, what I should do ?

Can I change MySQL C API default value via modifying '/etc/my.cnf '
configuration file ? ( I think that the best way is to modify
configuration file )

 

 

Thanks

Gang

 

 

 

 

 

Reply via email to