MySQL 5.7發(fā)布后,utf8字符集成為默認(rèn)字符集,但是在使用過(guò)程中,需要注意一些細(xì)節(jié)。以下是一些與之相關(guān)的規(guī)則。
1. 默認(rèn)編碼規(guī)則是utf8mb4,支持四個(gè)字節(jié)的UTF-8字符,并且不再需要設(shè)置字符集。 2. 如果想要在創(chuàng)建數(shù)據(jù)庫(kù)時(shí)指定不同的字符集,需要在CREATE DATABASE 語(yǔ)句中添加 CHARACTER SET 參數(shù)。例如: CREATE DATABASE mydatabase CHARACTER SET utf8; 3. 如果需要在創(chuàng)建數(shù)據(jù)表時(shí)指定不同的字符集,需要在CREATE TABLE 語(yǔ)句中添加 CHARACTER SET 參數(shù),例如: CREATE TABLE mytable (mycolumn VARCHAR(255)) CHARACTER SET utf8; 4. 如果在插入數(shù)據(jù)時(shí)遇到插入數(shù)據(jù)不兼容的情況,可以手動(dòng)轉(zhuǎn)換為UTF-8編碼,使用CONVERT函數(shù): INSERT INTO mytable (mycolumn) VALUES (CONVERT('你好', 'UTF-8')); 5. 如果需要在查詢語(yǔ)句中使用特殊符號(hào),例如%或_,需要使用轉(zhuǎn)義字符\,例如: SELECT * FROM mytable WHERE mycolumn LIKE '%\_%' ESCAPE '\'; 6. 在升級(jí)之前,需要備份原有的數(shù)據(jù)。在升級(jí)完成之后,檢查并修復(fù)不符合規(guī)則的數(shù)據(jù),使用 ALTER TABLE 語(yǔ)句修改不同的字符集,例如: ALTER TABLE mytable CONVERT TO CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci; 7. 可以在創(chuàng)建索引時(shí)指定COLLATE,例如: CREATE INDEX myindex ON mytable (mycolumn COLLATE utf8mb4_bin); 8. 如果需要將UTF-8字符串轉(zhuǎn)換為HEX值,可以使用UNHEX函數(shù): SELECT UNHEX('E4BDA0E5A5BDE4BABA'); 9. 如果需要將HEX值轉(zhuǎn)換為UTF-8字符串,可以使用HEX函數(shù): SELECT HEX('你好');