Django 連接mysql數據庫中文亂碼


Django 連接mysql數據庫中文亂碼

版本:CentOS6.8 python3.6.4 django1.8.2 數據庫pymysql

我使用的終端是CentOS終端,CentOS桌面版安裝的pycham,windows使用Navicat連接mysql數據庫。 
我遇到的情況大致這樣,在CentOS終端進入mysql,然后查詢表,中文顯示沒問題,在Navicat設置了utf-8,中文顯示也沒問題,但是當我在虛擬環境執行python manage.py shell,使用這個shell查詢,中文就亂碼了。 
亂碼第一時間想到的是編碼問題,在這里省略一萬字,通過各種查找資料,修改配置文件等等,然后結合各種資料信息,終於解決了這個問題!直接進入解決方法!

1:執行pip install PyMySQL ,查找出PyMySQL的安裝位置,然后執行cd命令進入,cd /root/.virtualenvs/Cole_py3/lib/python3.6/site-packages/pymysql(這里我的安裝目錄); 
2:在這個目錄下有一個connections.py文件,直接進入編輯, 
vim connections.py; 
3:進入編輯connections.py后,shift +:進入命令行,輸入/charset命令查找,打到def ini(),如下圖所示:這里寫圖片描述 
把charset=’ ‘改為charset=’utf8’;保存退出。 
4:接下來在終端運行mysql,執行命令mysql -uroot -p; 
5:運行數據庫后,執行命令show variables like “%char%”,如圖所示; 
這里寫圖片描述 
有幾個變量值是latin1的,要把它們改成utf8;網上有資料說執行這個命令 
set character_set_client=utf8; 
這個執行完之后的確是可以修改,但只是臨時的,退出數據庫重新登陸又恢復原來的數據,要把它永久修改要執行以下;

6:vim /etc/my.cnf,如下圖所示:這里寫圖片描述

[client]
default-character-set=utf8

[mysql]
default-character-set=utf8


[mysqld]
collation-server = utf8_unicode_ci
init-connect='SET NAMES utf8'
character-set-server = utf8


保存退出! 
7:再去mysql執行命令show variables like “%char%”; ,你會看到如下圖所示: 
這里寫圖片描述

修改成功!

8:如果有用Navicat的話,要去把編碼改為自動;右擊數據庫,選擇連接屬性——高級——在編碼那里選擇自動。

9:最后一步!你現在運行python manage.py shell或者運行mysql,然后查詢數據,顯示出來還是會亂碼的!!!因為這些數據是你之前輸入進去的,所以必須要把這些數據刪除,然后重新插入!完成!

Navicat 
這里寫圖片描述

mysql 
這里寫圖片描述

python manage.py shell 
這里寫圖片描述

 

改完重啟mysql數據庫


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM