________________________________ 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