MYSQL數據庫亂碼轉碼問題

事情有些複雜,是這樣的:

現狀:

數據庫:mysql,默認編碼為latin1,建庫用的默認編碼,所以是:latin1_swedish_ci;

site後臺為:ISO-8859-1;

site前臺為:UTF-8;

輸入:繁體中文;

 

目標:

把數據庫,後臺,編碼統一改為UTF-8

 

解決辦法:

得到了http://www.suixie.com/jianzhan/2007-05-26/65.html的提示,用最老實的辦法:select tableName INTO OUTFILE , LOAD DATA INFILE 的辦法,把兩個有中文的table導出文件,轉碼後再導入;

 

步驟:

  1. 導出數據庫。將old數據庫將數據庫結構導出,我用PHPMYADMIN,先MYSQL40模式,這樣導出的結構沒有charset=latin1_swedish_ci,如果有 latin1_swedish_ci的話,將 latin1_swedish_ci改為utf-8 ;
  2. 根據上面導出的數據庫結構建庫new,記得是建成utf-8編碼的,(一般來說是utf8-general_ci);
  3. 在命令行登錄mysql,進入old數據庫,執行:

select * into outfile 'e://test//tb.txt' FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" LINES TERMINATED BY "/r/n" FROM 要導出的表名(沒有引號);

這就可以看到e:/test/下有一個tb.txt文件,是導出的表的數據;

 

4.轉碼。因為我導出來的數據就是我看得出的中文,所以我倒是省了這一步。不過這個應該是不怎麼好弄吧?我試過用phpmyadmin導出的.sql文件,找了好幾個轉碼器都轉不了 !-_-

如果是亂碼,可以用轉換工具,比如convertz802來轉碼,這一步好似也是挺考驗的,因為要轉出來的tb.txt文件是utf-8編碼,並且裡邊的中文字正常的。

 

5.把文件再導入e://test//tb.txt數據庫new。LOAD DATA INFILE 'e://test//tb.txt' INTO TABLE database.new FIELDS TERMINATED BY "," OPTIONALLY ENCLOSED BY """" LINES TERMINATED BY "/r/n";

在這之前,有可能需要執行以下命令:

set names 'utf8';

set character_set_database='utf8'; // 通過show variables like 'character_set_%';查詢

你可能感兴趣的:(mysql,phpMyAdmin,table,database,character,variables)