在使用MySQL創建數據庫表時,在表的屬性中,必須要設置該表的編碼方式,否則會出現中文亂碼的問題。下面是如何設置編碼的幾種方式:
CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8;
在創建數據表時使用了 CHARACTER SET 和 COLLATE 這兩個參數來指定該表的字符集和排序方式。在上面的代碼中,"utf8"代表該表的字符集,"utf8_general_ci"代表排序方式,這種排序方式支持大多數的字符集。
如果直接給字段設置編碼,可以使用ALTER TABLE
命令進行修改:
ALTER TABLE `test` MODIFY `name` VARCHAR(50) CHARACTER SET utf8 COLLATE utf8_general_ci;
如果在創建連接數據庫時指定了編碼,那么在創建數據表時就可以不用設置編碼方式,該表會繼承數據庫的編碼方式:
CREATE DATABASE test DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci; USE test; CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=1;
在上面的代碼中,在創建數據庫時指定了編碼格式,則創建表時就不用指定,直接創建即可。