完美轉(zhuǎn)換MySQL的字符集 解決查看utf8源文件中的亂碼問題
更新時(shí)間:2011年11月30日 16:40:21 作者:
本人轉(zhuǎn)換過好多數(shù)據(jù)了,也用過了好多的辦法,個(gè)人感覺最好用的就是使用MySQL命令導(dǎo)出導(dǎo)入中將字符集轉(zhuǎn)換過去
MySQL從4.1版本開始才提出字符集的概念,所以對(duì)于MySQL4.0及其以下的版本,他們的字符集都是Latin1的,所以有時(shí)候需要對(duì)mysql的字符集進(jìn)行一下轉(zhuǎn)換,MySQL版本的升級(jí)、降級(jí),特別是升級(jí)MySQL的版本,為了不讓程序繼續(xù)沿用Latin1字符集之后對(duì)以后Discuz!版本升級(jí)的影響和安裝SupeSite,這就需要我們進(jìn)行字符集的轉(zhuǎn)換!
本人轉(zhuǎn)換過好多數(shù)據(jù)了,也用過了好多的辦法,個(gè)人感覺最好用的就是使用MySQL命令導(dǎo)出導(dǎo)入中將字符集轉(zhuǎn)換過去!
現(xiàn)在我將用圖文并茂的方式向大家展示一下如何將MySQL字符集進(jìn)行轉(zhuǎn)換,由于字符集比較多,現(xiàn)在主要舉GBK和Latin1這兩種字符集之間的轉(zhuǎn)換!
首先我將講解一下如何將MySQL從GBK轉(zhuǎn)換為L(zhǎng)atin1的(如果是UTF8或者BIG5轉(zhuǎn)換即將GBK換成相應(yīng)的字符集即可)!這種問題常發(fā)生在MySQL從MySQL4.1及其以上版本轉(zhuǎn)換為
MySQL4.1以下的版本的過程中!有的人圖個(gè)方便,特別是有主機(jī)權(quán)限的,直接將MySQL的data目錄下的文件拷貝過去了,這樣造成的問題就是亂碼問題!當(dāng)然我所說的這些都要求你必
須擁有主機(jī)權(quán)限,虛擬主機(jī)用戶可以在本地搭建好論壇,下載數(shù)據(jù)到你的本地,然后把數(shù)據(jù)導(dǎo)入到你本地的數(shù)據(jù)庫,然后進(jìn)行字符集的轉(zhuǎn)換!
現(xiàn)在的步驟就是將MySQL的數(shù)據(jù)導(dǎo)出了,在mysql的命令提示符下(linux系統(tǒng)為mysql的命令目錄下),輸入下面導(dǎo)出的命令:
mysqldump -uroot -p --default-character-set=gbk --set-charset=latin1 --compatible=mysql40 --skip-opt discuz>discuz.sql
如圖1(windows下)和圖2(linux下)所示


這樣就輕松的將數(shù)據(jù)從MySQL數(shù)據(jù)庫中導(dǎo)出了,此時(shí)導(dǎo)出的文件在與mysql命令同級(jí)的目錄下,即bin目錄下,而且已經(jīng)將MySQL字符集導(dǎo)出為L(zhǎng)atin1的了!現(xiàn)在要做的就是將數(shù)據(jù)導(dǎo)
入MySQL4.0中去!
同樣在4.0版本的mysql命令提示符下(linux系統(tǒng)為mysql的命令目錄下),輸入下面導(dǎo)入命令:
mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
如圖3(window下)和圖4(linux下)所示


這樣就將字符集從GBK轉(zhuǎn)為L(zhǎng)atin1同時(shí)將MySQL從4.1以上版本的轉(zhuǎn)為MySQL4.0的了!
現(xiàn)在講解一下如何從Latin1字符集轉(zhuǎn)換為GBK的!
由于只有MySQL4.1以上的版本才有字符集的概念,所以如果你要將MySQL4.0的字符集從Latin1轉(zhuǎn)換為GBK字符集的話,必須導(dǎo)入到MySQL4.1以上的版本中,然后再導(dǎo)出!這里面就多
了一個(gè)導(dǎo)出為L(zhǎng)atin1的步驟!
同樣在MySQL4.0的命令提示符下,輸入下面導(dǎo)出的命令:
mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz>discuz.sql
然后導(dǎo)入到MySQL4.1中,輸入下面導(dǎo)入的命令:
mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
然后在MySQL4.1下轉(zhuǎn)換字符集,分別輸入下面導(dǎo)出和導(dǎo)入的命令:
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt discuz>discuz.sql
mysql -uroot -p --default-character-set=gbk -f newdiscuz<discuz.sql
如果不出問題的話,那么轉(zhuǎn)換就完畢了!其實(shí)整個(gè)過程還是比較簡(jiǎn)單的,只是過程看起來比較麻煩些,但是過程卻是很簡(jiǎn)單明了的!
下面舉出一個(gè)在導(dǎo)入過程中極易容易出現(xiàn)的問題!
在導(dǎo)入的時(shí)候容易出現(xiàn)unknown command '/'這樣的錯(cuò)誤,其實(shí)這是由于MySQL在導(dǎo)出的時(shí)候,它有時(shí)候給一些繁體字后面自動(dòng)加上了個(gè)反斜杠造成的!解決此問題的辦法就是打開
備份的sql(這里為discuz.sql),提示錯(cuò)誤的時(shí)候會(huì)提示具體哪行出現(xiàn)了錯(cuò)誤,找到那行,把反斜杠去掉就行了!其實(shí)你可以用Ultraedit這些文本處理的工具,批量的去處理這些反斜杠
!憑個(gè)人經(jīng)驗(yàn),有很多用戶名取的比較怪,這樣就容易出現(xiàn)反斜杠,這樣只要糾正那些用戶名就行了!
以上是個(gè)人在轉(zhuǎn)換數(shù)據(jù)過程中的一些經(jīng)驗(yàn)之談,很多地方還有待大家完善!
本人轉(zhuǎn)換過好多數(shù)據(jù)了,也用過了好多的辦法,個(gè)人感覺最好用的就是使用MySQL命令導(dǎo)出導(dǎo)入中將字符集轉(zhuǎn)換過去!
現(xiàn)在我將用圖文并茂的方式向大家展示一下如何將MySQL字符集進(jìn)行轉(zhuǎn)換,由于字符集比較多,現(xiàn)在主要舉GBK和Latin1這兩種字符集之間的轉(zhuǎn)換!
首先我將講解一下如何將MySQL從GBK轉(zhuǎn)換為L(zhǎng)atin1的(如果是UTF8或者BIG5轉(zhuǎn)換即將GBK換成相應(yīng)的字符集即可)!這種問題常發(fā)生在MySQL從MySQL4.1及其以上版本轉(zhuǎn)換為
MySQL4.1以下的版本的過程中!有的人圖個(gè)方便,特別是有主機(jī)權(quán)限的,直接將MySQL的data目錄下的文件拷貝過去了,這樣造成的問題就是亂碼問題!當(dāng)然我所說的這些都要求你必
須擁有主機(jī)權(quán)限,虛擬主機(jī)用戶可以在本地搭建好論壇,下載數(shù)據(jù)到你的本地,然后把數(shù)據(jù)導(dǎo)入到你本地的數(shù)據(jù)庫,然后進(jìn)行字符集的轉(zhuǎn)換!
現(xiàn)在的步驟就是將MySQL的數(shù)據(jù)導(dǎo)出了,在mysql的命令提示符下(linux系統(tǒng)為mysql的命令目錄下),輸入下面導(dǎo)出的命令:
mysqldump -uroot -p --default-character-set=gbk --set-charset=latin1 --compatible=mysql40 --skip-opt discuz>discuz.sql
如圖1(windows下)和圖2(linux下)所示


這樣就輕松的將數(shù)據(jù)從MySQL數(shù)據(jù)庫中導(dǎo)出了,此時(shí)導(dǎo)出的文件在與mysql命令同級(jí)的目錄下,即bin目錄下,而且已經(jīng)將MySQL字符集導(dǎo)出為L(zhǎng)atin1的了!現(xiàn)在要做的就是將數(shù)據(jù)導(dǎo)
入MySQL4.0中去!
同樣在4.0版本的mysql命令提示符下(linux系統(tǒng)為mysql的命令目錄下),輸入下面導(dǎo)入命令:
mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
如圖3(window下)和圖4(linux下)所示


這樣就將字符集從GBK轉(zhuǎn)為L(zhǎng)atin1同時(shí)將MySQL從4.1以上版本的轉(zhuǎn)為MySQL4.0的了!
現(xiàn)在講解一下如何從Latin1字符集轉(zhuǎn)換為GBK的!
由于只有MySQL4.1以上的版本才有字符集的概念,所以如果你要將MySQL4.0的字符集從Latin1轉(zhuǎn)換為GBK字符集的話,必須導(dǎo)入到MySQL4.1以上的版本中,然后再導(dǎo)出!這里面就多
了一個(gè)導(dǎo)出為L(zhǎng)atin1的步驟!
同樣在MySQL4.0的命令提示符下,輸入下面導(dǎo)出的命令:
mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz>discuz.sql
然后導(dǎo)入到MySQL4.1中,輸入下面導(dǎo)入的命令:
mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
然后在MySQL4.1下轉(zhuǎn)換字符集,分別輸入下面導(dǎo)出和導(dǎo)入的命令:
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt discuz>discuz.sql
mysql -uroot -p --default-character-set=gbk -f newdiscuz<discuz.sql
如果不出問題的話,那么轉(zhuǎn)換就完畢了!其實(shí)整個(gè)過程還是比較簡(jiǎn)單的,只是過程看起來比較麻煩些,但是過程卻是很簡(jiǎn)單明了的!
下面舉出一個(gè)在導(dǎo)入過程中極易容易出現(xiàn)的問題!
在導(dǎo)入的時(shí)候容易出現(xiàn)unknown command '/'這樣的錯(cuò)誤,其實(shí)這是由于MySQL在導(dǎo)出的時(shí)候,它有時(shí)候給一些繁體字后面自動(dòng)加上了個(gè)反斜杠造成的!解決此問題的辦法就是打開
備份的sql(這里為discuz.sql),提示錯(cuò)誤的時(shí)候會(huì)提示具體哪行出現(xiàn)了錯(cuò)誤,找到那行,把反斜杠去掉就行了!其實(shí)你可以用Ultraedit這些文本處理的工具,批量的去處理這些反斜杠
!憑個(gè)人經(jīng)驗(yàn),有很多用戶名取的比較怪,這樣就容易出現(xiàn)反斜杠,這樣只要糾正那些用戶名就行了!
以上是個(gè)人在轉(zhuǎn)換數(shù)據(jù)過程中的一些經(jīng)驗(yàn)之談,很多地方還有待大家完善!
相關(guān)文章
MySQL數(shù)據(jù)庫中數(shù)值字段類型長(zhǎng)度int(11)和Decimal(M,D)詳解
這篇文章主要介紹了MySQL數(shù)據(jù)庫中數(shù)值字段類型長(zhǎng)度int(11)和Decimal(M,D)字段詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-06-06MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法詳解
這篇文章主要介紹了MYSQL數(shù)據(jù)庫表結(jié)構(gòu)優(yōu)化方法,總結(jié)分析了mysql針對(duì)表結(jié)構(gòu)優(yōu)化的數(shù)據(jù)類型選擇、范式化操作、表的拆分等相關(guān)使用技巧,需要的朋友可以參考下2019-08-08Mysql LONGTEXT 類型存儲(chǔ)大文件(二進(jìn)制也可以) (修改+調(diào)試+整理)
MySql2.cpp : Defines the entry point for the console application.2009-07-07windows下mysql 8.0.13 解壓版安裝圖文教程
這篇文章主要為大家詳細(xì)介紹了windows下mysql 8.0.13 解壓版安裝圖文教程,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2019-02-02