最近在使用sqlalchemy將中文存放至mysql資料庫的表中時出現:
warning code :1366 incorrect string value: '\xe5\x9c\xa8' for column 'content' at row 1
這是因為我們存放的中文,而我們的表並不支援中文字符集,使用 show variables like 'character%'; 檢視mysql當前編碼:
可以看出database和server的字符集使用的是latin1,latin1是不支援中文的,導致存放中文錯誤。
我嘗試了兩種方法來避免中文存放錯誤問題:
1:設定server和database為utf8型別
使用以下命令來設定在命令列輸入:
show variables like '%char%';
set character_set_server=utf8;
set character_set_database=utf8;
一般使用上面的命令就可以了,如果還不行,show create table 表名;,看看具體的column是不是字符集不對。
2:建表時設定預設字符集
我在建表時一般會在sql語句中設定預設字符集為utf8,來避免一些問題:
sql='''create table analysis(city varchar(20),companysize varchar(20),education varchar(20))default charset=utf8'''
在末尾新增default charset=utf8,來設定就好了,如果還需要設定其他的引數,也可以直接在sql語句的末尾新增。
這是個人遇到的乙個問題,這裡說一下:在使用sql語句時,有些單詞、字母是特殊字元類似於python中的class、import等,所以如果要使用這樣的關鍵字,需要給它加上反引號`,例如`index`,這裡的index就屬於關鍵字,若是直接使用,則會報錯。所以需要特別注意,我在使用時老是出錯,就是找不到問題,還以為其他錯誤,還好突然想起了資料庫老師偶然提到的這個問題。
Mysql中文亂碼問題完美解決方案
將 編碼設為 utf 8,這樣可以相容世界上所有字元。如果 已經運作了好久,已有很多舊資料,不能再更改簡體中文的設定,那麼建議將頁面的編碼設為 gbk,gbk與gb2312的區別就在於 gbk能比gb2312顯示更多的字元,要顯示簡體碼的繁體字,就只能用gbk。2.在編寫connection url...
解決mysql中文儲存問題
show variables like character 檢視mysql當前編碼 可以看出database和server的字符集使用的是latin1,latin1是不支援中文的,導致存放中文錯誤。處理方法 設定server和database為utf8型別 使用以下命令來設定在命令列輸入 show ...
解決mysql中文儲存問題
在mysql安裝目錄下先找到my.ini,給 mysql 和 mysqld 下的default character set賦值為utf8 即改為 default character set utf8 在建立表單的時候新增engine myisam default charset utf8 語句 例如...