Django中文亂碼解決
阿新 • • 發佈:2021-08-12
三步走解決:
1.修改Django的settings
2.修改mariadb的配置檔案
3.重啟mysql服務
大坑:原來的資料庫mariadb修改配置檔案為utf8後,原來的資料庫test還是沿用的原來的字符集latin1,所以需要建立新的資料庫test2,這樣Django ORM再次黃建時候就會預設建立urf8的表。
修改settings
DATABASES = { 'default': { 'ENGINE': 'django.db.backends.mysql', 'OPTIONS': {'charset': 'utf8'}, #增加選項 'NAME': 'test2', 'USER': 'soymilk', 'PASSWORD': '123456', 'HOST': '172.16.241.2', 'PORT': '3306', } }
修改mariadb配置檔案
/etc/my.cnf
[mysqld] character-set-server=utf8 collation-server=utf8_unicode_ci
/etc/my.cnf.d/mysql-clients.cnf
[mysql]
default-character-set=utf8
重啟mariadb
systemctl restart mariaDB
大坑:
新建資料庫test2
create database test2;
然後直接用ORM同步
mysql解決的話,修改的配置檔案不一樣(待驗證)
/etc/mysql/my.cnf
[mysql] default-character-set=utf8mb4 [mysqld] character-set-server=utf8mb4 collation-server=utf8mb4_unicode_ci
參考:
https://stackoverflow.com/questions/1073295/django-character-set-with-mysql-weirdness 解決Django中文亂碼
https://blog.csdn.net/DaLiShuiJiao/article/details/78122802 解決mariadb中文亂碼問題