我使用Python / Django来连接MySQL。
当我在Mysql中存储中文字符串时,我会得到乱码 发生了什么事?
我已设置我的Django项目的settings.py
,ENCODING
键设置为utf-8
。我做错了什么?
这是DATABASES
中的settings.py
变量:
DATABASES = {
'default': {
'ENGINE': 'django.db.backends.mysql',
'HOST': '127.0.0.1',
'PORT': 3306,
'NAME': 'admindb1',
'USER': 'root',
'PASSWORD': 'root',
'ENCODING': 'utf-8',
}
}
答案 0 :(得分:1)
您需要了解数据库/表/列级别的字符集/排序规则设置。列级设置优先于其他设置。因此,我将包含可用于在db的每个级别执行这些更改的命令。
检查您当前的配置(数据库):
SHOW CREATE DATABASE db_name;
检查您当前的配置(表格):
SHOW TABLE STATUS WHERE name ='tbl_name'
检查您当前的配置(列):
从tbl_name显示完整列;
更改字符集/整理(数据库):
ALTER DATABASE db_name DEFAULT CHARACTER SET utf8;
更改字符集/校对(表格):
ALTER TABLE tbl_name DEFAULT CHARACTER SET utf8;
更改字符集/归类(列):
ALTER TABLE tbl_name CONVERT TO CHARACTER SET utf8;
答案 1 :(得分:1)
我知道为什么我不能存储中文字。
当我进入mysql控制台时,我输入status
来检查我的mysql配置。我发现服务器和数据库字符集不是utf8导致混乱的代码。
这是我的解决方案。我使用vim来编辑my.cnf
。我的linux机器是Debian,所以cnf目录找到etc/mysql/my.cnf
。
添加如下所示并存储内容:
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
init-connect='SET NAMES utf8'
[client]
default-character-set=utf8
当我创建新数据库时,其配置可以存储utf8。