以前写过一篇有关如何处理mysql中文乱码的问题,结果发现还是有必要再写这一篇。 原因是很多时候,为了安全,不允许mysql管理工具连接线上的正式环境,这样的情况下,就不能依靠mysql管理工具来转换编码来解决中文乱码的问题。 这样的情况下只能通过putty或
以前写过一篇有关如何处理mysql中文乱码的问题,结果发现还是有必要再写这一篇。
原因是很多时候,为了安全,不允许mysql管理工具连接线上的正式环境,这样的情况下,就不能依靠mysql管理工具来转换编码来解决中文乱码的问题。
这样的情况下只能通过putty或者secureCRT远程连接mysql server,然后通过mysql命令界面来对mysql数据库导出,再做其他的编码转换操作。我现在面临的环境就是这样。
现在,描述一下我的数据情况,我需要导出中文乱码的数据表account.user:
mysql> show create database account;
+———-+——————————————————————————————+
| Database | Create Database |
+———-+——————————————————————————————+
| account | CREATE DATABASE `account` /*!40100 DEFAULT CHARACTER SET utf8 COLLATE utf8_unicode_ci */ |
+———-+——————————————————————————————+
1 row in set (0.00 sec)
mysql> show create table user;
+———————+———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————–+
| Table | Create Table |
+———————+———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————–+
| user_agreement_info | CREATE TABLE `user` (
`id` int(11) unsigned NOT NULL AUTO_INCREMENT,
`uid` bigint(21) unsigned NOT NULL,
`realname` char(32) NOT NULL,
`id_type` smallint(11) unsigned NOT NULL,
`id_num` char(32) DEFAULT NULL,
`create_time` int(10) unsigned DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `uid` (`uid`)
) ENGINE=MyISAM AUTO_INCREMENT=129287 DEFAULT CHARSET=utf8 |
+———————+———————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————————–+
1 row in set (0.02 sec)
#查询数据乱码,看下面:
mysql> select * from user limit 10;
+—-+————+—————————+———+——————–+————-+
| id | uid | realname | id_type | id_num | create_time |
+—-+————+—————————+———+——————–+————-+
| 23 | 1000001229 | è