|
第一步:本地?cái)?shù)據(jù)導(dǎo)出sql文件。心想這對(duì)于navicat小事一樁。直接在數(shù)據(jù)庫(kù)上右鍵“轉(zhuǎn)儲(chǔ)sql”(如圖1),嘩嘩,十幾秒的時(shí)間導(dǎo)出成功。
(圖1:navicat下對(duì)整個(gè)數(shù)據(jù)庫(kù)轉(zhuǎn)sql)
用記事本打開(kāi)一看,傻眼了。中文全是亂碼。咋回事呢?搜索了一下,改變什么連接屬性啥的。不管用。試著在單張表上,轉(zhuǎn)儲(chǔ)sql,嘿,中文正常。但是82個(gè)表,我一個(gè)個(gè)轉(zhuǎn)儲(chǔ)我不累死。不行。看來(lái)只能棄用我心愛(ài)的navicat了。想起有個(gè)mysqldump,好試試它。運(yùn)行-C:/Documents and Settings/Administrator>mysqldump -uroot -p123 ttg>ttgbk2.sql。打開(kāi)一看,還是亂碼。還不行。唉。。搜索,改成下面的加上指定字符集
C:/Documents and Settings/Administrator>mysqldump -uroot -p123 --default-character-set=gbk ttg>ttgbk2.sql。打開(kāi)看看。嘿可以了。
第二步:打開(kāi)虛擬主機(jī)提供的phpmyadmin.導(dǎo)入選擇文件ttgbk2.sql.點(diǎn)執(zhí)行。那個(gè)速度,唉。。。一會(huì)兒報(bào)錯(cuò)了。在執(zhí)行l(wèi)ock tables tablename write 時(shí)出現(xiàn)access denied錯(cuò)誤,原來(lái)我是虛擬主機(jī)用戶沒(méi)有 lock tables的權(quán)限.打開(kāi)sql一看還真有l(wèi)ock tables 選項(xiàng)。沒(méi)權(quán)限那就不用這個(gè)。到網(wǎng)上一搜說(shuō)加上--skip-lock-tables,心想不錯(cuò),應(yīng)該是這個(gè)“跳過(guò)鎖表”嘛
在mysqldump時(shí)加上-skip-lock-tables選項(xiàng),那么命令行就變成
C:/Documents and Settings/Administrator>mysqldump -uroot -p123 --default-character-set=gbk --skip-lock-tables ttg>ttgbk3.sql.
結(jié)果令人失望,還是有l(wèi)ock tables.
后來(lái)看了一下mysqldump --help
才明白--skip-lock-tables是用在備份時(shí)候不讓讀寫(xiě)。但是如果你不想讓導(dǎo)出的帶lock-tables(因?yàn)槟銓?dǎo)入的時(shí)候沒(méi)有權(quán)限嘛,呵呵)應(yīng)該是使用add-locks=false,這是2個(gè)概念。正確的如下
C:/Documents and Settings/Administrator>mysqldump -uroot -p123 --default-character-set=gbk ttg --add-locks=false>ttgttg3.sql.
我的版本導(dǎo)出的在記事本中打開(kāi)是asni格式的。
再次到phpmyadmin處導(dǎo)入。結(jié)果是導(dǎo)入了3個(gè)表后報(bào)錯(cuò)。mysql語(yǔ)句報(bào)錯(cuò)。一看中文還亂碼。。。。。接近崩潰。
再找原因。把“MySQL 連接校對(duì)”改成gbk-chinese-ci,把language改成中文-chinese simplified(如圖2)。再把導(dǎo)入時(shí)“文件編碼”改成“gbk”(默認(rèn)的是utf-8,當(dāng)然對(duì)應(yīng)的sql文件的編碼用記事本打開(kāi)就是ansi.)(如圖三).再試。。。。
(圖二:修改連接校對(duì)及l(fā)anguage)
(圖三:修改文件的字符集為gbk)
終于所有表導(dǎo)入成功。打開(kāi)一個(gè)含有中文的表,字段顯示正常。
2點(diǎn)體會(huì):
1、數(shù)據(jù)庫(kù)編碼歸數(shù)據(jù)庫(kù)編碼。保證連接校對(duì)與數(shù)據(jù)庫(kù)編碼一致即可。
2、sql文件編碼歸文件編碼。保證導(dǎo)入時(shí)選擇的文件編碼與數(shù)據(jù)庫(kù)所用編碼一致最好。
這是2個(gè)編碼問(wèn)題。
服了你了mysql.從知道你有這個(gè)編碼問(wèn)題到到現(xiàn)在,你還是這個(gè)樣子。這個(gè)問(wèn)題還是讓很多人困惑。啥時(shí)候像sqlserver那樣國(guó)際化就好了。
php技術(shù):實(shí)戰(zhàn)mysql導(dǎo)出中文亂碼及phpmyadmin導(dǎo)入中文亂碼的解決方法,轉(zhuǎn)載需保留來(lái)源!
鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。