关于使用Django admin模块插入中文时乱码的处理方法
2013-01-31 10:32 梁小白 阅读(1226) 评论(0) 编辑 收藏 举报django的models在定义时并没有相关参数来约定数据库和表及表中字段的编码规则。
所以一般情况下,使用manager.py syncdb创建的表均为latin-1编码,这种情况,当你使用admin模块在后台插入
中文数据时,会出现乱码提示。
网上通常的资料是使用sql语句将相关的需要插入中文的字段改为utf-8编码。
这是一种办法,但是,当字段较多时会比较麻烦。
(可以用phpmyadmin等图形管理工具)
其实不用这么麻烦。
出现乱码的根本原因在于,数据库创建表的本身编码不支持utf-8字符,所以从根本上将所有表和字段创建为utf-8编码才是解决方法。
这个思路一方面期待django 后续ORM模块加入对编码的支持。
还有一个方面是从数据库入手,对于mysql来说,可以在其配置文件中加入
[mysqld]
init_connect='SET NAMES utf8'
来解决.
经过测试,效果良好。
在以前的mysql中有这个选项。
default-character-set=utf8
但我在ubuntu 12.04 +mysql5.5的版本中加入此项,会导致mysql无法启动.
本文为原创内容,转载请注明出自 梁小白博客(http://biangbiang.cnblogs.com)