Chinaunix首页 | 论坛 | 博客
  • 博客访问: 650083
  • 博文数量: 137
  • 博客积分: 6189
  • 博客等级: 准将
  • 技术积分: 1559
  • 用 户 组: 普通用户
  • 注册时间: 2010-03-15 16:39
文章分类

全部博文(137)

文章存档

2010年(3)

2009年(1)

2008年(49)

2007年(56)

2006年(28)

分类: LINUX

2007-12-14 12:33:07

[教學] 如何轉換MySQL的字元庫?

完美轉換MySQL的字元集
&G0r­yZ/OK%u1B7s
  MySQL4.1版本開始才提出字元集的概念,所以對於MySQL4.0及其以下的版本,他們的字元集都是Latin1的,所以有時候需要對mysql的字元集進行一下轉換,MySQL版本的升級、降級,特別是升級MySQL的版本,爲了不讓程式繼續沿用Latin1字元集之後對以後Discuz!版本升級的影響和安裝SupeSite,這就需要我們進行字元集的轉換!
X(q3{E2a|!V
+LU
J:^)`
本人轉換過好多資料了,也用過了好多的辦法,個人感覺最好用的就是使用MySQL命令導出導入中將字元集轉換過去!現在我將用圖文並茂的方式向大家展示一下如何將MySQL字元集進行轉換,由於字元集比較多,現在主要舉GBKLatin1這兩種字元集之間的轉換!$x'hn%_4O:u2F C9\q .{

a首先我將講解一下如何將MySQLGBK轉換爲Latin1(如果是UTF8或者BIG5轉換即將GBK換成相應的字元集即可)!這種問題常發生在MySQLMySQL4.1及其以上版本轉換爲MySQL4.1以下的版本的過程中!有的人圖個方便,特別是有主機許可權的,直接將MySQLdata目錄下的文件拷貝過去了,這樣造成的問題就是亂碼問題!當然我所說的這些都要求你必須擁有主機許可權,虛擬主機用戶可以在本地搭建好論壇,下載資料到你的本地,然後把資料導入到你本地的資料庫,然後進行字元集的轉換![1]^:v
t/h


I4DFo ^
/I*@@#d
w
q
  現在的步驟就是將MySQL的資料導出了,mysql的命令提示符下(linux系統爲mysql的命令目錄下),輸入下面導出的命令:*T5rdc`D ~ V

 

 

 

 

 

mysqldump -uroot -p --default-character-set=gbk --set-charset=latin1 --compatible=mysql40 --skip-opt discuz>discuz.sql

這樣就輕鬆的將資料從MySQL資料庫中導出了,此時導出的文件在與mysql命令同級的目錄下,bin目錄下,而且已經將MySQL字元集導出爲Latin1的了!現在要做的就是將資料導入MySQL4.0中去![3y0?$v(k0q

同樣在4.0版本的mysql命令提示符下(linux系統爲mysql的命令目錄下),輸入下面導入命令:

mysql -uroot -p --default-character-set=latin1 -f discuz:]7u,

這樣就將字元集從GBK轉爲Latin1同時將MySQL4.1以上版本的轉爲MySQL4.0的了!7現在講解一下如何從Latin1字元集轉換爲GBK!m SR

由於只有MySQL4.1以上的版本才有字元集的概念,所以如果你要將MySQL4.0的字元集從Latin1轉換爲GBK字元集的話,必須導入到MySQL4.1以上的版本中,然後再導出!這裏面就多了一個導出爲Latin1的步驟!j3D9V

1CSP"@$g#aH A同樣在MySQL4.0的命令提示符下,輸入下面導出的命令:

 mysqldump -uroot -p --default-character-set=latin1 --set-charset=latin1 --skip-opt discuz>discuz.sql

     然後導入到MySQL4.1,輸入下面導入的命令:

 0X


{
w0J\6T!p mysql -uroot -p --default-character-set=latin1 -f discuz‑o
p f,m r3Ya­u

F.X然後在MySQL4.1下轉換字元集,分別輸入下面導出和導入的命令::q:Q‑J C9^q)byUg ?J-TG)y0v)fxP,NJ‑U
nd
mysqldump -uroot -p --default-character-set=latin1 --set-charset=gbk --skip-opt discuz>discuz.sql

n } y2l b,l mysql -uroot -p --default-character-set=gbk -f newdiscuz

­如果不出問題的話,那麽轉換就完畢了!其實整個過程還是比較簡單的,只是過程看起來比較麻煩些,但是過程卻是很簡單明瞭的!S0n!\
A%z
\Rr_

1x'Pk8K


Lx#W      下面舉出一個在導入過程中極易容易出現的問題!&MY­\/M:I
1e.ZN!x[1]t(R'G.s&R$T
I
     
在導入的時候容易出現unknown command '/'這樣的錯誤,其實這是由於MySQL在 導出的時候,它有時候給一些繁體字後面自動加上了個反斜杠造成的!解決此問題的辦法就是打開備份的sql(這裏爲discuz.sql),提示錯誤的時候 會提示具體哪行出現了錯誤,找到那行,把反斜杠去掉就行了!其實你可以用Ultraedit這些文本處理的工具,批量的去處理這些反斜杠!憑個人經驗,有 很多用戶名取的比較怪,這樣就容易出現反斜杠,這樣只要糾正那些用戶名就行了!
?-P G GU_

] C9F?!Z*c$ar5K!}
以上是個人在轉換資料過程中的一些經驗之談,很多地方還有待大家完善!

 

阅读(998) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~