Django无法在MySQL中保存unicode字符串(OperationalError - 1366,“字符串值不正确”)

时间:2017-01-29 06:23:18

标签: python mysql django unicode

我的一个模特中有一个TextField。我尝试将一串日本字符插入数据库,我收到了这个错误:

OperationalError at /admin/pages/page/add/
(1366, "Incorrect string value: '\\xE3\\x83\\x91\\xE3\\x83\\xAF...' for column 'body' at row 1")

我认为Django,Python和MySQL支持Unicode并首先使用它。发生了什么,我该如何解决?

2 个答案:

答案 0 :(得分:2)

这不是Python / Django相关的问题。您的MySQL表列不支持您当前使用的unicode格式。

MySQL使用的默认字符集是utf-8。如果要更改任何特定列的字符集,可以将查询运行为:

ALTER TABLE db.table MODIFY COLUMN my_column VARCHAR(255)
CHARACTER SET utf8 COLLATE utf8_general_ci NOT NULL;

其中:

  • db:您的数据库
  • table:表格的名称
  • my_column:您要修改的列的名称

答案 1 :(得分:0)

您只需要在保存值的同时进行流动。

character_set_results
<块引用>

您需要在保存之前使用 unicode_escape 进行编码 (self.name = str(self.name.encode('unicode_escape'))) 然后您将能够保存任何值(包括日语字符) 无需进行任何其他设置或数据库更改