主要問題就是在字符集,通常解決這種問題都是靠試驗。我實驗了一通,得出的結論和你們分享一下(若有錯誤,還望指正):python
設置數據庫的字符集爲utf8mb4
:建立數據庫時(注意:是數據庫),指定字符集(charset)和對比算法(collate)CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
,後面再說 collate幹嗎的。mysql
設置數據庫鏈接的字符集爲utf8mb4
:在創建 mysql 數據庫鏈接時,指定字符集(charset),下面用 pyton 的 pymsql 鏈接數據庫姿式舉例:算法
import pymysql params = { 'host': '127.0.0.1', 'port': 3306, 'db': 'xueweihan', 'user': 'root', 'password': '', 'charset': 'utf8mb4'} # set charset connection = pymysql.connect(**params)
不一樣字符集,對比方式(collate)也不同,因此須要指定對比的規則,utf8mb4_unicode_ci
就是utf8mb4
字符集對應的對比規則。比方說字符集爲utf8mb4
數據庫,執行 sql 語句: select * from boy where name='xueweihan'
,就須要用指定的collate規則,來過濾數據庫中的紀錄。sql
建立數據庫:
CREATE DATABASE mydatabase CHARACTER SET utf8mb4 COLLATE utf8mb4_unicode_ci;
數據庫
鏈接數據庫:code
import pymysql params = { 'host': '127.0.0.1', 'port': 3306, 'db': 'xueweihan', 'user': 'root', 'password': '', 'charset': 'utf8mb4'} # set charset connection = pymysql.connect(**params)