- 论坛徽章:
- 0
|
本帖最后由 ibmxp 于 2010-09-16 11:36 编辑
数据库字符集设置情况如下:
mysql>show variables like 'character_set_%';
+--------------------------+----------------------------+
| Variable_name | Value |
+--------------------------+----------------------------+
| character_set_client | gbk |
| character_set_connection | gbk |
| character_set_database | gbk |
| character_set_filesystem | binary |
| character_set_results | gbk |
| character_set_server | latin1 |
| character_set_system | utf8 |
| character_sets_dir | /usr/share/mysql/charsets/ |
+--------------------------+----------------------------+
数据库字符集设置情况如下:
>mysql status;
mysql Ver 14.14 Distrib 5.1.50, for pc-linux-gnu (i686) using readline 5.1
Connection id: 34
Current database: testdb
Current user: testdb@localhost
SSL: Not in use
Current pager: less
Using outfile: ''
Using delimiter: ;
Server version: 5.1.50-community-log MySQL Community Server (GPL)
Protocol version: 10
Connection: Localhost via UNIX socket
Server characterset: latin1
Db characterset: gbk
Client characterset: gbk
Conn. characterset: gbk
UNIX socket: /home/vost5/mysql/mysql.sock
Uptime: 44 min 8 sec
Threads: 1 Questions: 171 Slow queries: 1 Opens: 121 Flush tables: 1 Open tables: 26 Queries per second avg: 0.64
--------------
数据库表、字段都采用默认字符集,未使用特殊设置。
mysql>select * from abc;
查看中文正常
>echo $LANG
zh_CN.gbk
>locale -a|grep -i zh_CN
zh_CN
zh_CN.gb18030
zh_CN.gbk
zh_CN.utf8
测评程序如下:
void main()
{
char acDbname [ 30 + 1 ];
char acDbhost [ 30 + 1 ];
char acDbuser [ 30 + 1 ];
char acDbpass [ 30 + 1 ];
MYSQL dbconnect;
char acSql [ 200 + 1 ];
MYSQL_RES *res;
MYSQL_ROW resrow;
int inum=0;
memset( acDbname , 0x00, sizeof( acDbname ) );
memset( acDbhost , 0x00, sizeof( acDbhost ) );
memset( acDbuser , 0x00, sizeof( acDbuser ) );
memset( acDbpass , 0x00, sizeof( acDbpass ) );
sprintf( acDbname, "%s", (char *)getenv("DBNAME") );
sprintf( acDbhost, "%s", (char *)getenv("DBHOST") );
sprintf( acDbuser, "%s", (char *)getenv("DBUSER") );
/* 打开数据库 */
mysql_init(&dbconnect );
mysql_real_connect( &dbconnect, acDbhost, acDbuser,acDbpass,acDbname,3306,NULL,CLIENT_FOUND_ROWS);
printf( "return no [%d]\n", mysql_errno(&dbconnect) );
sprintf( acSql ,"select * from xxzd where xxdm='ZZZZZ10' order by xxdm ,zdxh" );
mysql_query( &dbconnect , sql );
res= mysql_store_result(&dbconnect);
mysql_free_result( res );
mysql_close(&dbconnect );
printf( "resrow0[%s]\n", resrow[0] );
printf( "resrow1[%s]\n", resrow[1] );
printf( "resrow2[%s]\n", resrow[2] );
printf( "resrow3[%s]\n", resrow[3] );
return;
}
程序结果如下:
resrow0[ZZZZZ10]
resrow1[5]
resrow2[? ? ?]
resrow3[]
resrow2应该是中文,但却显示??,乱码了,不知问题在哪? |
|