在MySQL中存储中文单词时,它变成了乱码

时间:2015-04-18 05:17:29

标签: python mysql django

我使用Python / Django来连接MySQL。

当我在Mysql中存储中文字符串时,我会得到乱码 发生了什么事?

我已设置我的Django项目的settings.pyENCODING键设置为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',
    }
}

2 个答案:

答案 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。