首页 > mysql > mysql导入gbk数据乱码解决方案

mysql导入gbk数据乱码解决方案

2011年11月15日 发表评论 阅读评论

最近想把本地测试系统数据库中的数据导入线上服务器,我把用phpmyadmin把表导成sql文件quancha.sql,然后使用
mysql -u quancha -p quancha1114< quancha.sql 导入数据。 本以为一切ok,可是用程序一查出来的中文都是??乱码。 分析一下因为我的数据使用的是gbk编码,而phpmyadmin导出的sql文件是utf-8编码的,我把sql文件转成gbk的再试也不行。 然后我就怀疑是数据库的问题,使用 >status
看了下数据库编码是latin1,我又去改/etc/mysql/my.cnf改成
[mysqld]
default-character-set=gbk
...
[client]
default-character-set=gbk

重启mysql服务
service mysql restart

修改数据库编码为gbk
alter database databasename character set gbk;

然后设置客户端为gbk

set names gbk;

导入反复再试,还是不行,崩溃了...
最后看了下phpmyadmin导出的sql文件,其中有这么一段
/*!40101 SET @OLD_CHARACTER_SET_CLIENT=@@CHARACTER_SET_CLIENT */;
/*!40101 SET @OLD_CHARACTER_SET_RESULTS=@@CHARACTER_SET_RESULTS */;
/*!40101 SET @OLD_COLLATION_CONNECTION=@@COLLATION_CONNECTION */;
/*!40101 SET NAMES utf8 */;

这个是phpmyadmin自动添加的,它把编码设置成utf8来导入了。

把这几行删除之后,再试。

这个世界恢复太平了。中文正常显示了。

--------
ad一下 提供手机号归属地数据库 包括2g,3g所有号码269168万门数据。

导入的sql内容
set names gbk;

CREATE TABLE IF NOT EXISTS meta (
module varchar(80) NOT NULL,
title varchar(200) NOT NULL,
keywords varchar(200) NOT NULL,
description varchar(200) NOT NULL
) ENGINE=MyISAM DEFAULT CHARSET=gb2312;

--
-- 导出表中的数据 meta
--

INSERT INTO meta (module, title, keywords, description) VALUES
('Downurl', '下载地址转换,迅雷,快车,旋风地址转换器 - 全查工具箱 ', '下载地址,转换,迅雷,快车,旋风,地址转换器', '下载地址,转换,迅雷,快车,旋风,地址转换器'),
('Ip', 'IP地址查询|全查工具箱', 'IP地址查询', '最新IP地址查询,每日更新'),
('Sfz', '身份证归属地查询 | 全查网', '身份证归属地查询,身份证雁阵', '提供身份证号码,身份证查询,身份证号码查询验证,并有效识别身份证真伪');

分类: mysql 标签: ,
  1. 本文目前尚无任何评论.
  1. 本文目前尚无任何 trackbacks 和 pingbacks.