查看單個文章
  #11  
舊 2007-12-26, 06:40 PM
liou 的頭像
liou liou 目前離線
進階會員
 
註冊日期: 2006-02-18
文章: 809
酷

1. 你的資料庫狀況分析:

早期是從:
[論壇] --儲存成BIG5--> [資料] --無校對--> [MySQL4.0資料庫]


目前狀態是:
[論壇] --儲存成BIG5--> [資料] --latin1校對--> [MySQL5.0資料庫]


將來建議要改成:
[論壇] --儲存成UTF8(或Big5)--> [資料] --Utf8校對(或big5校對)--> [MySQL5.0資料庫]

(建議將來都改用 utf8 比較不會出問題)


2.
上述第一階段 [論壇]到[資料] 的儲存模式是由論壇設定的,(請自行翻閱論壇的設定檔)
(一般論壇會偵測你的資料庫是4.0以前或是4.1之後,
4.0之前的就會以big5模式儲存, 4.1之後他可能會多一個項目讓你從big5轉換成utf8,
但是 假如你內部卻用latin1校對方式,論壇並不曉得,一轉換下去 整個論壇都會變成亂碼瞬間毀掉,
所以轉換前,請先備份資料庫, 並且請先確定你的資料庫是否是全部都big5校對再決定轉換.)

3.
第二階段的[資料]到[MySQL資料庫]的儲存校對模式則是由 MySql設定的.(請自行翻閱phpmyadmin資料庫的結構或管理)
(1) 當初 MySQL 4.0以下 是沒有校對模式的.
(2) 升級到4.1~5.0的時候, 你創立資料庫自動被預設為 latin1 校對模式,(而不是選擇big5或utf8)
原本依照正常情況來看, 你當初應該要手動建立 big5資料庫的.


因為大部分創立資料庫都是在Cpanel創立,而Phpmyadmin通常不讓你創立資料庫,
所以建立出來的都是 latin1資料庫, 必須自行手動改成 big5或utf8


以下這個作者寫的,是我看過唯一我能理解的Mysql地球文章,
前半部是寫如何創立一個原始空白的資料庫,就先把它從latin1改成big5或Utf8資料庫,避免以後出錯;
後半部是寫已經把big5或utf8資料給寫到latin1校對錯誤的兩種解決方式:
http://www.winzfree.happyhost.org/mysqlcheck/index.htm



4. 為啥你看到的資料是亂碼:
[論壇] --儲存成BIG5--> [資料] --larin1校對--> [MySQL5.0資料庫]

目前你的[資料] 看到都是亂碼, 表示你從 [MySQL5.0資料庫] 反倒出來的時候,
不是透過正確的latin1校對模式,



5. 至於如何徹底解決
這個我也不是很懂, 我是建議如下啦:

資料庫和論壇檔案 都要備分,
用備份複製出來的資料庫 ,cpanel的 file manage複製論壇所有檔案,
到新目錄去慢慢實驗,不要動用到原來的論壇目錄和論壇資料庫.

(1)
你可以倒出來的時候, 要輸出之前, 校對模式用latin1(或big5都試試),
先設法把資料庫輸出到你的電腦裡,
然後使用 像 EmEditor 這種軟體, 去變更整個檔案從 latin語系變為big5,(讀取latin1 儲存big5)
看看是否亂碼會變回正確的中文.

PS.
這裡我覺得需要交叉比對,
輸出資料庫到電腦的時候 各選 latin1 big5 utf8 三種存檔,
三種存檔 使用EmEditor 各再用 latin1 big5 utf8 三種方式讀取 看看哪一種會變成正確的中文碼,(總共有9種變化...)
然後再以BIG5方式存檔.

(2)
再將上述正確的中文編碼的檔案
修改資料裡面的latin1_swedish_ci 改成你的語系 big5_chinese_ci

(3)
在cpanel建立新空白資料庫 , 在phpmyadmin [管理] 項目中將語系改成用big5校對,

(4)
該空白資料庫[載入],語系選擇 Big5.
這樣子應該就變成標準的Big5資料庫了...


也就是像這位作者寫的 處理方式B 方式...
http://www.winzfree.happyhost.org/mysqlcheck/index.htm


PS.
我上次主機商突然升級資料庫害我措手不及,來不及備份最新的4.0版本的資料庫.
為了這個問題,解到資料庫編碼更加混亂掉完全廢掉,
最後只好拿當初4.0版本的舊資料庫來用,損失了2個月份的留言...

建議你再以Google搜尋: mysql latin1 big5 或是 mysql latin1 utf8
類似這些的,會有一堆文章討論...(不過,我大部分都看不懂...)

---------------------

我也提醒大家,
當Mysql資料庫 4.0 無校對模式,不需要特別注意.

但是 升級到Mysql 4.1~5.0以上,就要注意在cpanel建立新資料庫,會被設定成latin校對這個錯誤.
每次只要建立新資料庫,就一定要記的手動改成utf8或big5,不然以後資料庫的問題會一堆...

此篇文章於 2007-12-26 08:58 PM 被 liou 編輯。
回覆時引用此篇文章