很多項目在初建時由於工程師不嚴謹或者水平不夠選用了錯誤的資料庫編碼,用latin1編碼儲存中文資料,隨著項目複雜程度提高,會出現各種編碼問題,可以說是後患無窮,經過反覆測試,我總結出一個辦法可以把latin1編碼的資料庫轉換成gbk或u8編碼,與大家分享
一. latin1 轉 gbk
1.匯出資料庫
mysqldump --default-character-set=latin1 -h xxx.xxx.xxx.xxx -u xxx -P 3306 -pxxxxxxxx db_name table_name > /usr/home/wanghui3/table_name.sql
2.修改 table_name.sql
/*!40101 SET NAMES latin1 */; 改為 /*!40101 SET NAMES gbk */;
建表語句中
DEFAULT CHARSET=latin1; 改為 DEFAULT CHARSET=gbk;
註:不同版本的mysqldump可能稍有出入
3.匯入資料庫
mysql -uroot -pxxxxxxxx db_name < table_name.sql
二. latin1 轉 utf-8
1.第一步不變
2.轉換編碼
iconv -t utf-8 -f gbk -c table_name.sql > table_name_u8.sql
注意:用latin1儲存中文本就是錯誤的,表中儲存的是錯誤的latin1編碼,但實際上是正確的gbk編碼,所以這裡輸入編碼應為gbk
3. 修改table_name_u8.sql,找到 latin1 都改為 utf8
4.匯入資料庫
mysql -uroot -pxxxxxxxx db_name < table_name_u8.sql
=======================================================
查看系統的字元集和排序方式的設定可以通過下面的兩條命令:
mysql> SHOW VARIABLES LIKE 'character%';
mysql> SHOW VARIABLES LIKE 'collation_%';
本文出自 “上帝學編程” 部落格,請務必保留此出處http://higgs.blog.51cto.com/6015929/995100