Django admin界面 Incorrect string value错误的解决

在django admin界面添加汉字内容时发现如下错误:

Warning at /admin/flatpages/flatpage/add/
Incorrect string value: '\xE5\x93\x88\xE5\x93\x88...' for column 'content' at row 1
Request Method:	POST
Request URL:	http://127.0.0.1:8000/admin/flatpages/flatpage/add/
Django Version:	1.2.1
Exception Type:	Warning
Exception Value:	
Incorrect string value: '\xE5\x93\x88\xE5\x93\x88...' for column 'content' at row 1
Exception Location:	/usr/lib/pymodules/python2.6/MySQLdb/cursors.py in _warning_check, line 82
Python Executable:	/usr/bin/python
Python Version:	2.6.6

之前添加英文没有任何问题,查看mysql数据库编码发现是 latin1_swedish_ci。之前是利用phpmyadmin

解决办法为:在第一次syncdb操作之前,设置所创建数据库编码为 utf8_genenal_ci或utf8_unicode(不知道这二者在处理中文上有什么区别?)。

在创建数据库时可使用如下命令:

GBK:CREATE DATABASE tinyCMS DEFAULT CHARACTER SET gbk COLLATE gbk_chinese_ci;

UTF8:
CREATE DATABASE tinyCMS DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;

已创建时(但对已存在的表不影响):

ALTER DATABASE tinyCMS CHARACTER SET utf8 COLLATE utf8_general_ci;

mysql 创建 数据库时指定编码很重要,很多开发者都使用了默认编码,但是制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题。

我们应该遵循的标准是:数据库,表,字段和页面或文本的编码要统一起来。

posted @ 2011-02-15 17:16  TinyZ  阅读(4707)  评论(1编辑  收藏  举报