程序師世界是廣大編程愛好者互助、分享、學習的平台,程序師世界有你更精彩!
首頁
編程語言
C語言|JAVA編程
Python編程
網頁編程
ASP編程|PHP編程
JSP編程
數據庫知識
MYSQL數據庫|SqlServer數據庫
Oracle數據庫|DB2數據庫
 程式師世界 >> 數據庫知識 >> MYSQL數據庫 >> 關於MYSQL數據庫 >> 完美轉換MySQL的字符集 解決查看utf8源文件中的亂碼問題

完美轉換MySQL的字符集 解決查看utf8源文件中的亂碼問題

編輯:關於MYSQL數據庫
MySQL從4.1版本開始才提出字符集的概念,所以對於MySQL4.0及其以下的版本,他們的字符集都是Latin1的,所以有時候需要對mysql的字符集進行一下轉換,MySQL版本的升級、降級,特別是升級MySQL的版本,為了不讓程序繼續沿用Latin1字符集之後對以後Discuz!版本升級的影響和安裝SupeSite,這就需要我們進行字符集的轉換!
本人轉換過好多數據了,也用過了好多的辦法,個人感覺最好用的就是使用MySQL命令導出導入中將字符集轉換過去!
現在我將用圖文並茂的方式向大家展示一下如何將MySQL字符集進行轉換,由於字符集比較多,現在主要舉GBK和Latin1這兩種字符集之間的轉換!
首先我將講解一下如何將MySQL從GBK轉換為Latin1的(如果是UTF8或者BIG5轉換即將GBK換成相應的字符集即可)!這種問題常發生在MySQL從MySQL4.1及其以上版本轉換為

MySQL4.1以下的版本的過程中!有的人圖個方便,特別是有主機權限的,直接將MySQL的data目錄下的文件拷貝過去了,這樣造成的問題就是亂碼問題!當然我所說的這些都要求你必

須擁有主機權限,虛擬主機用戶可以在本地搭建好論壇,下載數據到你的本地,然後把數據導入到你本地的數據庫,然後進行字符集的轉換!
現在的步驟就是將MySQL的數據導出了,在mysql的命令提示符下(linux系統為mysql的命令目錄下),輸入下面導出的命令:
mysqldump -uroot -p --default-character-set=gbk --set-charset=latin1 --compatible=mysql40 --skip-opt discuz>discuz.sql
如圖1(windows下)和圖2(linux下)所示



這樣就輕松的將數據從MySQL數據庫中導出了,此時導出的文件在與mysql命令同級的目錄下,即bin目錄下,而且已經將MySQL字符集導出為Latin1的了!現在要做的就是將數據導

入MySQL4.0中去!
同樣在4.0版本的mysql命令提示符下(linux系統為mysql的命令目錄下),輸入下面導入命令:
mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
如圖3(window下)和圖4(linux下)所示



這樣就將字符集從GBK轉為Latin1同時將MySQL從4.1以上版本的轉為MySQL4.0的了!
現在講解一下如何從Latin1字符集轉換為GBK的!
由於只有MySQL4.1以上的版本才有字符集的概念,所以如果你要將MySQL4.0的字符集從Latin1轉換為GBK字符集的話,必須導入到MySQL4.1以上的版本中,然後再導出!這裡面就多

了一個導出為Latin1的步驟!
同樣在MySQL4.0的命令提示符下,輸入下面導出的命令:
mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz>discuz.sql
然後導入到MySQL4.1中,輸入下面導入的命令:
mysql -uroot -p --default-character-set=latin1 -f discuz<discuz.sql
然後在MySQL4.1下轉換字符集,分別輸入下面導出和導入的命令:
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
如果不出問題的話,那麼轉換就完畢了!其實整個過程還是比較簡單的,只是過程看起來比較麻煩些,但是過程卻是很簡單明了的!
下面舉出一個在導入過程中極易容易出現的問題!
在導入的時候容易出現unknown command '/'這樣的錯誤,其實這是由於MySQL在導出的時候,它有時候給一些繁體字後面自動加上了個反斜槓造成的!解決此問題的辦法就是打開

備份的sql(這裡為discuz.sql),提示錯誤的時候會提示具體哪行出現了錯誤,找到那行,把反斜槓去掉就行了!其實你可以用Ultraedit這些文本處理的工具,批量的去處理這些反斜槓

!憑個人經驗,有很多用戶名取的比較怪,這樣就容易出現反斜槓,這樣只要糾正那些用戶名就行了!
以上是個人在轉換數據過程中的一些經驗之談,很多地方還有待大家完善!
  1. 上一頁:
  2. 下一頁:
Copyright © 程式師世界 All Rights Reserved