我遇到的乱码问题:
当前数据库编码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编码的,但是这样的情况我怎么才能把乱码转换成正常的显示呢?
当前数据库编码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编码的,但是这样的情况我怎么才能把乱码转换成正常的显示呢?
解决方案 »
免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货