在django admin界面添加汉字内容时发现如下错误:
<SPAN style = "FONT-SIZE: 14px" >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 < / SPAN> |
之前添加英文没有任何问题,查看mysql数据库编码发现是 latin1_swedish_ci。之前是利用phpmyadmin “
解决办法为:在第一次syncdb操作之前,设置所创建数据库编码为 utf8_genenal_ci或utf8_unicode(不知道这二者在处理中文上有什么区别?)。
在创建数据库时可使用如下命令:
GBK:CREATEDATABASE tinyCMS DEFAULTCHARACTERSET gbk COLLATE gbk_chinese_ci;
UTF8: CREATEDATABASE tinyCMS DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci;
UTF8: CREATEDATABASE tinyCMS DEFAULTCHARACTERSET utf8 COLLATE utf8_general_ci;
已创建时(但对已存在的表不影响):
ALTERDATABASE tinyCMS CHARACTERSET utf8 COLLATE utf8_general_ci;
mysql 创建 数据库时指定编码很重要,很多开发者都使用了默认编码,但是制定数据库的编码可以很大程度上避免倒入导出带来的乱码问题。
我们应该遵循的标准是:数据库,表,字段和页面或文本的编码要统一起来。