MySQL GBK→UTF-8編碼轉(zhuǎn)換
更新時(shí)間:2007年05月24日 00:00:00 作者:
前言:
第一次寫(xiě)教程,其實(shí)算不得教程,只是想總結(jié)個(gè)轉(zhuǎn)換的手記。如果中間有錯(cuò)誤,或者辦法不夠理想,大家回貼研究下。
另外,我也希望我們論壇不僅僅作為閑聊的地方,也希望大家能活躍我們論壇的學(xué)習(xí)氣氛,畢竟我們都來(lái)自一個(gè)應(yīng)該給我們知識(shí)的地方,不論你從那里獲得了多少你需要的知識(shí)。
好了,言歸正傳。
一準(zhǔn)備:
環(huán)境:MySQL4.1.x及以上版本。
Convertz——文本編碼轉(zhuǎn)換工具,molyx上介紹的,我采用的。其實(shí)這類工具很多。
二理論:
MySQL從4.1版本開(kāi)始內(nèi)部存儲(chǔ)字符集支持了UTF-8,這個(gè)我也是這幾天才看到的。因?yàn)樯?jí)論壇過(guò)程中,服務(wù)器數(shù)據(jù)庫(kù)環(huán)境為4.0.26當(dāng)時(shí)不知道并不支持utf-8字符集,還廢了些周折。這樣如果涉及到UTF-8轉(zhuǎn)儲(chǔ)還要升級(jí)MySQL版本到4.1以上。
轉(zhuǎn)換的大概思路是——備份(有備無(wú)緩)→修復(fù)數(shù)據(jù)庫(kù)→mysqldump導(dǎo)出→Convertz轉(zhuǎn)換編碼→修改轉(zhuǎn)換后文件→mysqldump導(dǎo)入恢復(fù)
三實(shí)踐:
1、備份。這個(gè)不需要太多說(shuō)了你可以采用任何一種常規(guī)的備份方式只要你自己恢復(fù)的了。
2、修復(fù)。mysqlcheck -r -u user -p 如果全OK那就OK了,如果不全OK,再來(lái)遍。還沒(méi)全OK,不知道怎么弄了。
3、導(dǎo)出。由于latin1為默認(rèn)存儲(chǔ),所以你需要事先確定你數(shù)據(jù)庫(kù)的編碼格式。舉例,lncz.net原為gbk編碼,但存儲(chǔ)為latin1,這樣導(dǎo)出時(shí)應(yīng)該指定編碼為latin1,導(dǎo)出后才能以ANSI形式正確顯示gbk的文字。
導(dǎo)出命令:mysqldump database_name field > path --default-character-set=latin1 -u user -p
數(shù)據(jù)庫(kù)大需要分段,不然接下來(lái)的操作會(huì)很麻煩。我是單獨(dú)把每個(gè)表導(dǎo)出來(lái)的。當(dāng)時(shí)想法比較簡(jiǎn)單,因?yàn)閿?shù)據(jù)庫(kù)有壞表,只想在恢復(fù)的時(shí)候知道哪個(gè)表出錯(cuò)單獨(dú)修復(fù)。
4、轉(zhuǎn)換。Convertz用這個(gè)軟件很簡(jiǎn)單,不必多說(shuō)了。
5、修改。我在嘗試直接導(dǎo)入恢復(fù)數(shù)據(jù)庫(kù)時(shí),失敗了N次,每次都亂碼。仔細(xì)想過(guò)之后才明白,如果你直接導(dǎo)回去,數(shù)據(jù)庫(kù)還是用默認(rèn)的latin1去存儲(chǔ),而你的現(xiàn)在的編碼是utf-8所以它會(huì)再進(jìn)行一次轉(zhuǎn)換便出錯(cuò)了。這里MySQL到底怎么處理的我還不是十分清楚,誰(shuí)知道麻煩相告。這時(shí)我們需要對(duì)轉(zhuǎn)換好的文件加入語(yǔ)句 “set names utf8;”注意不是utf-8;并且需要將文件中“CHARSET=latin1;”改為“CHARSET=utf8;”來(lái)指定表的存儲(chǔ)編碼。
6、恢復(fù)?;謴?fù)過(guò)程按道理應(yīng)該是很簡(jiǎn)單的,都是mysqldump處理。需要注意一點(diǎn)就是如果你的數(shù)據(jù)庫(kù)大,要做全局變量的修改max_allowed_packet默認(rèn)為1M,看你數(shù)據(jù)庫(kù)表的大小,相應(yīng)修改my.ini文件。
導(dǎo)入命令:mysqldump database_name < path -u user -p 導(dǎo)入順利的話你的數(shù)據(jù)庫(kù)編碼就已經(jīng)轉(zhuǎn)換為utf-8了。
在下比較菜,如果有錯(cuò)誤請(qǐng)指正,表笑我。以上僅供參考。
第一次寫(xiě)教程,其實(shí)算不得教程,只是想總結(jié)個(gè)轉(zhuǎn)換的手記。如果中間有錯(cuò)誤,或者辦法不夠理想,大家回貼研究下。
另外,我也希望我們論壇不僅僅作為閑聊的地方,也希望大家能活躍我們論壇的學(xué)習(xí)氣氛,畢竟我們都來(lái)自一個(gè)應(yīng)該給我們知識(shí)的地方,不論你從那里獲得了多少你需要的知識(shí)。
好了,言歸正傳。
一準(zhǔn)備:
環(huán)境:MySQL4.1.x及以上版本。
Convertz——文本編碼轉(zhuǎn)換工具,molyx上介紹的,我采用的。其實(shí)這類工具很多。
二理論:
MySQL從4.1版本開(kāi)始內(nèi)部存儲(chǔ)字符集支持了UTF-8,這個(gè)我也是這幾天才看到的。因?yàn)樯?jí)論壇過(guò)程中,服務(wù)器數(shù)據(jù)庫(kù)環(huán)境為4.0.26當(dāng)時(shí)不知道并不支持utf-8字符集,還廢了些周折。這樣如果涉及到UTF-8轉(zhuǎn)儲(chǔ)還要升級(jí)MySQL版本到4.1以上。
轉(zhuǎn)換的大概思路是——備份(有備無(wú)緩)→修復(fù)數(shù)據(jù)庫(kù)→mysqldump導(dǎo)出→Convertz轉(zhuǎn)換編碼→修改轉(zhuǎn)換后文件→mysqldump導(dǎo)入恢復(fù)
三實(shí)踐:
1、備份。這個(gè)不需要太多說(shuō)了你可以采用任何一種常規(guī)的備份方式只要你自己恢復(fù)的了。
2、修復(fù)。mysqlcheck -r -u user -p 如果全OK那就OK了,如果不全OK,再來(lái)遍。還沒(méi)全OK,不知道怎么弄了。
3、導(dǎo)出。由于latin1為默認(rèn)存儲(chǔ),所以你需要事先確定你數(shù)據(jù)庫(kù)的編碼格式。舉例,lncz.net原為gbk編碼,但存儲(chǔ)為latin1,這樣導(dǎo)出時(shí)應(yīng)該指定編碼為latin1,導(dǎo)出后才能以ANSI形式正確顯示gbk的文字。
導(dǎo)出命令:mysqldump database_name field > path --default-character-set=latin1 -u user -p
數(shù)據(jù)庫(kù)大需要分段,不然接下來(lái)的操作會(huì)很麻煩。我是單獨(dú)把每個(gè)表導(dǎo)出來(lái)的。當(dāng)時(shí)想法比較簡(jiǎn)單,因?yàn)閿?shù)據(jù)庫(kù)有壞表,只想在恢復(fù)的時(shí)候知道哪個(gè)表出錯(cuò)單獨(dú)修復(fù)。
4、轉(zhuǎn)換。Convertz用這個(gè)軟件很簡(jiǎn)單,不必多說(shuō)了。
5、修改。我在嘗試直接導(dǎo)入恢復(fù)數(shù)據(jù)庫(kù)時(shí),失敗了N次,每次都亂碼。仔細(xì)想過(guò)之后才明白,如果你直接導(dǎo)回去,數(shù)據(jù)庫(kù)還是用默認(rèn)的latin1去存儲(chǔ),而你的現(xiàn)在的編碼是utf-8所以它會(huì)再進(jìn)行一次轉(zhuǎn)換便出錯(cuò)了。這里MySQL到底怎么處理的我還不是十分清楚,誰(shuí)知道麻煩相告。這時(shí)我們需要對(duì)轉(zhuǎn)換好的文件加入語(yǔ)句 “set names utf8;”注意不是utf-8;并且需要將文件中“CHARSET=latin1;”改為“CHARSET=utf8;”來(lái)指定表的存儲(chǔ)編碼。
6、恢復(fù)?;謴?fù)過(guò)程按道理應(yīng)該是很簡(jiǎn)單的,都是mysqldump處理。需要注意一點(diǎn)就是如果你的數(shù)據(jù)庫(kù)大,要做全局變量的修改max_allowed_packet默認(rèn)為1M,看你數(shù)據(jù)庫(kù)表的大小,相應(yīng)修改my.ini文件。
導(dǎo)入命令:mysqldump database_name < path -u user -p 導(dǎo)入順利的話你的數(shù)據(jù)庫(kù)編碼就已經(jīng)轉(zhuǎn)換為utf-8了。
在下比較菜,如果有錯(cuò)誤請(qǐng)指正,表笑我。以上僅供參考。
相關(guān)文章
php安裝dblib擴(kuò)展,連接mssql的具體步驟
下面小編就為大家?guī)?lái)一篇php安裝dblib擴(kuò)展,連接mssql的具體步驟。小編覺(jué)得挺不錯(cuò)的,現(xiàn)在就分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-03-03深入解析PHP垃圾回收機(jī)制對(duì)內(nèi)存泄露的處理
本篇文章是關(guān)于PHP垃圾回收機(jī)制對(duì)內(nèi)存泄露的處理進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06dede3.1分頁(yè)文字采集過(guò)濾規(guī)則詳說(shuō)(圖文教程)
dede3.1分頁(yè)文字采集過(guò)濾規(guī)則詳說(shuō)(圖文教程)...2007-04-04JS與PHP向函數(shù)傳遞可變參數(shù)的區(qū)別實(shí)例代碼
JS與PHP向函數(shù)傳遞可變參數(shù)的區(qū)別實(shí)例代碼,需要的朋友可以參考下。2011-05-05基于PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的詳細(xì)教程
這篇文章主要介紹了基于PHP實(shí)現(xiàn)用戶登錄注冊(cè)功能的詳細(xì)教程,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-08-08PHP版 漢字轉(zhuǎn)碼的實(shí)現(xiàn)詳解
本篇文章是對(duì)用php實(shí)現(xiàn)漢字轉(zhuǎn)碼進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下2013-06-06