Home  >  Article  >  Database  >  使用mysqldump对数据库进行备份的乱码问题_MySQL

使用mysqldump对数据库进行备份的乱码问题_MySQL

WBOY
WBOYOriginal
2016-06-01 13:32:291020browse

mysqldump

bitsCN.com

使用mysqldump对数据库进行备份的乱码问题

 

最近在做项目的工程中,由于系统中需要提供数据库备份的功能,经过网上一番搜索,觉得采用简单的mysqldump

(1)java代码

[java] 

String backupSQL = "cmd /c mysqldump -urootdd --extended-insert=false  -hlocalhost fts> "  

                    + DB_BACKUPFILE_PATH + " ";  

            Runtime runtime = Runtime.getRuntime();  

            System.out.println(runtime.exec(backupSQL));  

通过执行上面的代码段的出来的文件中,中文部分都已乱码出现,起初怀疑是数据库的编码有关,于是通过以下方式来查询数据库的编码

(2) >show variables like 'character%';


使用mysqldump对数据库进行备份的乱码问题_MySQL
 

经过以上步骤可以确定数据库的编码是没有问题的,经过再次网上搜索 得到如下结论

"如果MySQL服务器上的字符集是 latin1 或者其他的的,mysqldump 出来的中文都是乱码!一个简单的办法是加上默认字符集选项,如:

mysqldump [-h 127.0.0.1 -P 3307 ] -u username --default-character-set=gbk -p databasename > dumpfile.txt,

--default-character-set 知道数据内容是中文时可以指定为 gbk,这样即使数据库本身设置字符集为 latin1 出来的文件中文也能正常!", 最后将代码改成如下形式

(3)最终java 代码

[java] 

String backupSQL = "cmd /c mysqldump -urootdd --default-character-set=gbk --opt --extended-insert=false  -hlocalhost fts> "  

                    + DB_BACKUPFILE_PATH + " ";  

            Runtime runtime = Runtime.getRuntime();  

            System.out.println(runtime.exec(backupSQL));  

 

经过以上修改,终于搞定,导出的文件中的中文时正常显示的

bitsCN.com
Statement:
The content of this article is voluntarily contributed by netizens, and the copyright belongs to the original author. This site does not assume corresponding legal responsibility. If you find any content suspected of plagiarism or infringement, please contact admin@php.cn