我遇到的乱码问题:
当前数据库编码utf8:
mysql> show variables like 'char%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | utf8                                   |
| character_set_connection | utf8                                   |
| character_set_database   | utf8                                   |
| character_set_filesystem | binary                                 |
| character_set_results    | utf8                                   |
| character_set_server     | utf8                                   |
| character_set_system     | utf8                                   |
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+
8 rows in set (0.00 sec)
数据表结构:
mysql> show create table tvehicle;
| Table            | Create Table                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                
| tvehicle | CREATE TABLE `tvehicle` (
  `uid` bigint(21) unsigned DEFAULT '0' COMMENT '用户id',
  `gitude_s` float(8,5) DEFAULT NULL COMMENT '经度',
  `itude_s` float(8,5) DEFAULT NULL COMMENT '纬度',
  `speed` smallint(5) DEFAULT NULL COMMENT '当前速度',
  `telnum` smallint(5) DEFAULT NULL COMMENT '区号',
  `province` char(32) DEFAULT NULL,
  `city` char(32) DEFAULT NULL,
  `district` char(32) DEFAULT NULL,
  `districtcode` int(11) DEFAULT NULL,
  `lt_time` int(11) unsigned DEFAULT '0',
  `update_time` timestamp NOT NULL DEFAULT '0000-00-00 00:00:00',
  `create_time` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP,
  PRIMARY KEY (`eqid`),
  KEY `telnum` (`telnum`)
) ENGINE=MyISAM DEFAULT CHARSET=utf8 COMMENT='信息表'                                              |
+------------------+---------------------------------------
问题来了,我查询记录,发现乱码:
mysql> select * from tvehicle limit 1;
Current database: data
+------------------+------------+-----------+----------+-------------+------------+-------+--------+----------
| uid        | longitude_s | latitude_s | speed | telnum | province            | city | district            | districtcode | lt_time    | update_time         | create_time         |
+------------------+------------+-----------+----------+-------------+------------+-------+--------+----------
| 10000170 | 111.54987 |   23.80696 |     0 |    574 | æµ™æ±Ÿçœ           | NULL | é„žå·žåŒº           |       330212 | 1346888867 | 2010-09-06 08:55:48 | 2010-05-06 18:07:20 |
+------------------+------------+-----------+----------+-------------+------------+-------+--------+----------
1 row in set (0.01 sec)我做以下操作就可以显示正常了:
mysql> set names latin1;
mysql> select * from tvehicle limit 1;
Current database: data
+------------------+------------+-----------+----------+-------------+------------+-------+--------+----------
| uid        | longitude_s | latitude_s | speed | telnum | province            | city | district            | districtcode | lt_time    | update_time         | create_time         |
+------------------+------------+-----------+----------+-------------+------------+-------+--------+----------
| 10000170 | 111.54987 |   23.80696 |     0 |    574 | 浙江省           | NULL | 杭州市           |       330212 | 1346888867 | 2010-09-06 08:55:48 | 2010-05-06 18:07:20 |
+------------------+------------+-----------+----------+-------------+------------+-------+--------+----------
1 row in set (0.01 sec)
此时数据库的编码:
mysql> show variables like 'char%';
+--------------------------+----------------------------------------+
| Variable_name            | Value                                  |
+--------------------------+----------------------------------------+
| character_set_client     | latin1                                 |
| character_set_connection | latin1                                 |
| character_set_database   | utf8                                   |
| character_set_filesystem | binary                                 |
| character_set_results    | latin1                                 |
| character_set_server     | utf8                                   |
| character_set_system     | utf8                                   |
| character_sets_dir       | /usr/local/mysql/share/mysql/charsets/ |
+--------------------------+----------------------------------------+
8 rows in set (0.00 sec)我这边尝试的操作是,按照utf8导出,按照latin1导出,都是乱码,猜测是php端存储到数据库里的数据就是latin编码的,但是这样的情况我怎么才能把乱码转换成正常的显示呢?