解决Linux数据库导出到Windows下乱码的问题

WBOY
풀어 주다: 2016-06-07 16:31:58
원래의
1734명이 탐색했습니다.

前段时间公司服务器做平台迁移,需要将Linux下的MySQL数据库导出到Windows的服务器下。很自然的用了mysqldump指令导出了SQL文件,然后在Windows下进行了MySQL导入操作。导入结束后检查了表数量等等都没问题,于是很自然的以为导入工作顺利完成。 结果哪知道

前段时间公司服务器做平台迁移,需要将Linux下的MySQL数据库导出到Windows的服务器下。很自然的用了mysqldump指令导出了SQL文件,然后在Windows下进行了MySQL导入操作。导入结束后检查了表数量等等都没问题,于是很自然的以为导入工作顺利完成。

结果哪知道后来发现出来了乱码的问题,多次尝试mysqldump导出后导入都不行。于是,只能是编码的问题导致这样的情况了。

Linux系统安装的MySQL,默认的语言是latin1;而Windows下的MySQL在图形化界面安装过程中已经设置默认编码为UTF-8了。看来应该就是这样的问题了,编码问题害死人,经常乱码不说还折腾人

于是网上搜索了一圈,很简单的就解决了,记录解决步骤如下:

1、以Linux下的MySQL默认编码导出数据:

#mysqldump -u USERNAME -pPASSWORD–default-character-set=latin1[DBname] > [filepath/filename.sql]

其中USERNAME为数据库用户名,一般为root。PASSWORD为密码,也可以不填写,只带上-p标记。最关键的就要数“–default-character-set=latin1”这部分了,一定要跟Linux系统下的编码设置一致。然后DBName为数据库名,后面就是导出的文件路径了。

2、在Windows下用NotePad++、UltraEdit之类的支持多编码格式的文本编辑器打开这个导出的SQL文件,看看有没有乱码。如果没有乱码的话,进行下面的操作。

找到:

CREATE TABLE `table` (
…略…
) ENGINE=MyISAM DEFAULT CHARSET=latin1AUTO_INCREMENT=1 ;

将其改为:

CREATE TABLE `table` (
…略…
) ENGINE=MyISAM DEFAULT CHARSET=utf8AUTO_INCREMENT=1 ;

3、将改好的文件保存成UTF8格式,注意不要添加BOM信息,这样就得到一个UTF8的SQL文档了!

4、执行MySQL导入命令:

mysql -u USERNAME -pPASSWORD [DBname]

5、用phpMyAdmin检查下,现在终于不乱码了,问题解决!

资料参考:http://blog.roga.tw/2008/11/05/1127

원천:php.cn
본 웹사이트의 성명
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.
최신 이슈
최신 다운로드
더>
웹 효과
웹사이트 소스 코드
웹사이트 자료
프론트엔드 템플릿
회사 소개 부인 성명 Sitemap
PHP 중국어 웹사이트:공공복지 온라인 PHP 교육,PHP 학습자의 빠른 성장을 도와주세요!