IT貓撲網(wǎng):您身邊最放心的安全下載站! 最新更新|軟件分類|軟件專題|手機(jī)版|論壇轉(zhuǎn)貼|軟件發(fā)布

您當(dāng)前所在位置: 首頁(yè)數(shù)據(jù)庫(kù)MYSQL → MYSQL編碼轉(zhuǎn)換問(wèn)題大全

MYSQL編碼轉(zhuǎn)換問(wèn)題大全

時(shí)間:2015-06-28 00:00:00 來(lái)源:IT貓撲網(wǎng) 作者:網(wǎng)管聯(lián)盟 我要評(píng)論(0)

一:
1、備份數(shù)據(jù)庫(kù)

mysqldump --default-character-set=latin1 --create-options=false --set-charset=false -u root -p 數(shù)據(jù)庫(kù)名稱 > E:\back.sql

2、創(chuàng)建新數(shù)據(jù)庫(kù)

CREATE DATABASE 數(shù)據(jù)庫(kù)名稱 CHARACTER SET utf8 COLLATE utf8_general_ci;

3、導(dǎo)入數(shù)據(jù)

mysql -u root -p --default-character-set=gbk 數(shù)據(jù)庫(kù)名稱 < E:\back.sql

二:
步驟一 命令行執(zhí)行:mysqldump --opt -hlocalhost -uroot -p*** --default-character-set=lantin1 dbname > /usr/local/dbname.sql

步驟二 將 dbname.sql文件中的create table語(yǔ)句的CHARSET=latin1改為CHARSET=utf8

步驟三 在dbname.sql文件中的insert語(yǔ)句之前加一條'set names utf8;'

步驟四 將dbname.sql轉(zhuǎn)碼為utf-8格式,建議使用UltraEditor,可以直接使用該編輯器的'轉(zhuǎn)換->ASCII到UTF-8(Unicode編輯)',或者將文件另存為UTF-8(無(wú)BOM)格式

步驟五 命令行執(zhí)行:mysql -hlocalhost -uroot -p*** --default-character-set=utf8 new_dbname < /usr/local/dbname.sql

總結(jié):這種方法有個(gè)致命之處就是當(dāng)數(shù)據(jù)中有大量中文字符和其他特殊符號(hào)字符時(shí),很有可能導(dǎo)致在[步驟五]時(shí)報(bào)錯(cuò)導(dǎo)致無(wú)法正常導(dǎo)入數(shù)據(jù),如果數(shù)據(jù)庫(kù)比較大可以分別對(duì)每張表執(zhí)行上述步驟


三:

為了解決第一種方法中總結(jié)時(shí)說(shuō)到的問(wèn)題,在網(wǎng)上苦苦查找了一天資料才東拼西湊的搞出一個(gè)比較穩(wěn)妥的解決方法

步驟一 將待導(dǎo)出的數(shù)據(jù)表的表結(jié)構(gòu)導(dǎo)出(可以用Phpmyadmin、mysqldump等,很簡(jiǎn)單就不說(shuō)了),然后將導(dǎo)出的create table語(yǔ)句的CHARSET=latin1改為CHARSET=utf8,在目標(biāo)庫(kù)newdbname中執(zhí)行該create table語(yǔ)句把表結(jié)構(gòu)建好,接下來(lái)開(kāi)始導(dǎo)出-導(dǎo)入數(shù)據(jù)

步驟二 命令行:進(jìn)入mysql命令行下,mysql -hlocalhost -uroot -p*** dbname

步驟三 執(zhí)行SQL select * from tbname into outfile '/usr/local/tbname.sql';

步驟四 將tbname.sql轉(zhuǎn)碼為utf-8格式,建議使用UltraEditor,可以直接使用該編輯器的'轉(zhuǎn)換->ASCII到UTF-8(Unicode編輯)',或者將文件另存為UTF-8(無(wú)BOM)格式

步驟五 在mysql命令行下執(zhí)行語(yǔ)句 set character_set_database=utf8;??注:設(shè)置mysql的環(huán)境變量,這樣mysql在下一步讀取sql文件時(shí)將以u(píng)tf8的形式去解釋該文件內(nèi)容

步驟六 在mysql命令行下執(zhí)行語(yǔ)句 load data infile 'tbname.sql' into table newdbname.tbname;

注意:千萬(wàn)不要忘了第四步

采用第二種方法,所有數(shù)據(jù)均正常導(dǎo)入,且格式轉(zhuǎn)換成功沒(méi)有亂碼



四:

mysql數(shù)據(jù)轉(zhuǎn)換編碼
[root@piglet home]# mysqldump -u root -p --default-character-set=latin1 --set-charset=utf8 --skip-opt aiyomama_cn > /home/sites/savemoney.sql
Enter password:



五:

下回來(lái)的是latin1亂碼的文件,因此,本機(jī)也架起Mysql5.0的環(huán)境
2. 然后新建一個(gè)空數(shù)據(jù)庫(kù),編碼為UTF8,用下回來(lái)的sql文件導(dǎo)入
3. 再用phpmyadmin導(dǎo)出來(lái),這樣編碼就成了UTF8
4. 把導(dǎo)出的sql文件中所有的DEFAULT CHARSET=latin1替換成DEFAULT CHARSET=utf8
5. 刪除原來(lái)的latin1編碼的數(shù)據(jù)庫(kù),導(dǎo)入這個(gè)UTF8編碼的sql文件
完成:)

補(bǔ)充一下重點(diǎn):
在執(zhí)行完第2步的時(shí)候,用PHPMYADMIN打開(kāi)數(shù)據(jù)庫(kù)看看
里面所有的表和字段都還是LATIN1,沒(méi)關(guān)系,繼續(xù)執(zhí)行第3步
執(zhí)行完第3步,可以用文本編輯器打開(kāi)SQL文件看看,換UTF8格式查看
這時(shí),表和字段的內(nèi)容就是UTF8了!

以上五種方法我都試驗(yàn)了一遍,可能是數(shù)據(jù)庫(kù)實(shí)在太大,有的方法完全不行,有的可以但只能轉(zhuǎn)換到一半也出錯(cuò)停止,無(wú)法轉(zhuǎn)換完全部,最后在不懈努力之下找到個(gè)編碼轉(zhuǎn)換的PHP小腳本文件,使用后全部庫(kù)轉(zhuǎn)換正常,看來(lái)還是工具來(lái)的方便啊,手工忙了半天都沒(méi)解決。。。不過(guò)還有點(diǎn)就是不管遇到什么問(wèn)題,搜索引擎一般情況下都能幫助你解決問(wèn)題,只要你愿意去花時(shí)間自己解決問(wèn)題。

關(guān)鍵詞標(biāo)簽:MYSQL,編碼轉(zhuǎn)換

相關(guān)閱讀

文章評(píng)論
發(fā)表評(píng)論

熱門(mén)文章 Xbox Game Pass Xbox Game Pass 10款MySQL數(shù)據(jù)庫(kù)客戶端圖形界面管理工具推薦 10款MySQL數(shù)據(jù)庫(kù)客戶端圖形界面管理工具推薦 MySQL常用維護(hù)管理工具 MySQL常用維護(hù)管理工具 MySQL數(shù)據(jù)庫(kù)啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié) MySQL數(shù)據(jù)庫(kù)啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié)

相關(guān)下載

    人氣排行 10款MySQL數(shù)據(jù)庫(kù)客戶端圖形界面管理工具推薦 MySQL數(shù)據(jù)庫(kù)啟動(dòng)失敗1067進(jìn)程意外終止的解決辦法總結(jié) Mysql 1045錯(cuò)誤解決辦法 MySQL服務(wù)器進(jìn)程CPU占用100%解決辦法 MySQL導(dǎo)出導(dǎo)入命令的用例 MySQL連接字符串的實(shí)際操作步驟匯總 MySQL無(wú)法啟動(dòng)、無(wú)法停止各種解決方法總結(jié) 三種常用的MySQL建表語(yǔ)句