mysql把latin1编码的中文转成gbk(或utf8)编码
很多項目在初建時由于工程師不嚴謹或者水平不夠選用了錯誤的數(shù)據(jù)庫編碼,用latin1編碼存儲中文數(shù)據(jù),隨著項目復(fù)雜程度提高,會出現(xiàn)各種編碼問題,可以說是后患無窮,經(jīng)過反復(fù)測試,我總結(jié)出一個辦法可以把latin1編碼的數(shù)據(jù)庫轉(zhuǎn)換成gbk或u8編碼,與大家分享
一. latin1 轉(zhuǎn) gbk
1.導(dǎo)出數(shù)據(jù)庫
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.導(dǎo)入數(shù)據(jù)庫
mysql -uroot -pxxxxxxxx? db_name < table_name.sql
二. latin1 轉(zhuǎn) utf-8
1.第一步不變
2.轉(zhuǎn)換編碼
iconv -t utf-8 -f gbk -c table_name.sql > table_name_u8.sql
注意:用latin1保存中文本就是錯誤的,表中存儲的是錯誤的latin1編碼,但實際上是正確的gbk編碼,所以這里輸入編碼應(yīng)為gbk
3. 修改table_name_u8.sql,找到 latin1 都改為 utf8
4.導(dǎo)入數(shù)據(jù)庫
mysql -uroot -pxxxxxxxx? db_name < table_name_u8.sql
=======================================================
查看系統(tǒng)的字符集和排序方式的設(shè)定可以通過下面的兩條命令:
mysql> SHOW VARIABLES LIKE 'character%';
mysql> SHOW VARIABLES LIKE 'collation_%';
轉(zhuǎn)載于:https://blog.51cto.com/higgs/995100
總結(jié)
以上是生活随笔為你收集整理的mysql把latin1编码的中文转成gbk(或utf8)编码的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: SAS数据挖掘方法论 ─ SEMMA
- 下一篇: GNU make manual 翻译(七