還是之前說的問題,向數(shù)據(jù)庫存儲emoji表情的時候,報錯:Incorrect string value: '\xF0\x9F\xA4\x97\xF0\x9F...' for column 'content' at row 1。
上篇文章說到,只需要把字段的格式設(shè)置成utf8mb4的字符集就可以解決這個問題。確實如果我們把字段的字符集設(shè)置成這樣之后,使用數(shù)據(jù)庫管理工具的時候可以直接把emoji寫入到字段中,但是為什么在程序中寫入數(shù)據(jù)庫的時候還是報這個錯誤呢。
經(jīng)過我的一番思索后想到,可能是因為數(shù)據(jù)庫連接的設(shè)置問題,連接數(shù)據(jù)庫的時候沒有指定字符集,數(shù)據(jù)庫連接字符集是用于在數(shù)據(jù)庫連接過程中指定字符編碼的參數(shù)。它決定了在連接數(shù)據(jù)庫時使用的字符編碼方式,一半連接數(shù)據(jù)庫的默認(rèn)配置都是使用utf8的字符集進(jìn)行連接,所以我傳過去的表情符號其實還是被使用utf8的字符集進(jìn)行存儲了,所以還是報錯了。
那么只需要設(shè)置一下數(shù)據(jù)庫連接方式就可以了,把連接數(shù)據(jù)庫時使用的字符集設(shè)置為utf8mb4,Django如何設(shè)置連接數(shù)據(jù)庫使用的字符集呢,需要在項目的settings.py文件中修改數(shù)據(jù)庫配置文件,增加charset:utf8mb4即可解決問題
關(guān)鍵詞: