2017-06-15 148 views
0

我必須將一些巨大的表格(> 60 GB)從latin1轉換爲utf8,我正在尋找最佳實踐。一個問題是一些表包含序列化的php對象。如何將帶有序列化值的latin1錶轉換爲utf8?

我的第一種方法是將TEXT列設置爲BLOB,將字符集轉換爲utf8並將列轉換回TEXT,但是我在最後一步遇到了一些問題(不正確的字符串值:'\ xE4 \ xF6 \ XFC \ XDF「;?...')

什麼是對值正確轉換爲UTF-8,最好的策略

+0

請注意,[serialize()](http://php.net/serialize)輸出不應該是純文本:*請注意,這是一個二進制字符串,可能包含空字節,需要存儲並如此處理。例如,serialize()輸出通常應存儲在數據庫的BLOB字段中,而不是CHAR或TEXT字段* –

回答

0

鑑於數據是在latin1編碼,如在äöüß你例如,即列爲CHARACTER SET latin1,請參閱http://mysql.rjweb.org/doc.php/charcoll#fixes_for_various_cases,其中說

ALTER TABLE tbl CONVERT TO CHARACTER SET utf8mb4; 

(或UTF8)

注:這將改變在一個表中的所有文本列的字符集;只有一張桌子。