21,893
社区成员




//关键在这里
mysql_query("set names gbk");
//可拆分为3句
mysql_query("set character_set_client=gbk");//告诉数据库,传入语句的客户端数据使用的是gbk编码,这样mysql那边就可以相应的正确转换编码,比如你的'垟'字,gb2312是没有编码的,你如果通知mysql,你用的是gb2312编码,mysql碰到这个gb2312里没有编码的汉字,它到下一步就不知道怎么转了,而gbk里是有这个字的编码的,gbk是gb2312编码的兼容扩展版,放心用吧。
mysql_query("set character_set_connection=gbk");//在与表的交互过程中,仍然要根据表的collation_charset进行比较,比如你的是utf-8编码,则需要再次转码,将gbk->utf8,然后才进行insert操作。如果你的库是utf8编码,这里直接set character_set_connection=utf8也是可以的。
mysql_query("set character_set_results=gbk");//查询到的数据,转成gbk编码返回。insert/update语句可以不理这个
//执行insert
mysql_query("insert into ...");
mysql> insert into a values('垟');
Query OK, 1 row affected (0.03 sec)
mysql> select * from a;
+------+
| font |
+------+
| 垟 |
+------+
1 row in set (0.00 sec)
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 | gbk |
| character_set_system | utf8 |
| character_sets_dir | d:\wamp\mysql\share\charsets\ |
+--------------------------+-------------------------------+
8 rows in set (0.00 sec)