這幾天遇到一個問題,在使用該指令進行資料庫同步時,資料庫中的中文資料總會變為亂碼。作為國際化項目,首先第一想到的就是編碼問題。因為這些資料庫在初始化時所有的SQL檔案都是UTF-8,是以就理所當然的認為,應該在導出是使用--default-charact-set=UTF-8。可是問題依舊。
最後,重新仔細閱讀了mysqldump的使用說明,發現:If no character set is specified, mysqldump from MySQL 4.1.2 or later uses <code>utf8</code>, and earlier versions use <code>latin1</code>. 由于項目中使用的資料庫是4.1.13,那麼就是說預設已經utf8,指令中設定編碼作用根本沒有起作用。第二天,從同僚處傳來好消息,将編碼設定為latin1就可以了。于是趕緊拿來一試 ,果不其然,完全正确。于是想:由于資料庫預設的編碼是latin1,那麼在資料庫初始化時中文資料的編碼已經被轉化,隻要使用資料庫的預設編碼導出即可。不知是否正确?