修改MySQL的默认编码设置
浏览:2109次 出处信息
最近在MacOS下用django框架做web开发,于是用MacPorts安装了MySQL5。但是测试时django的测试框架会报错,原因是UTF8数据无法插入。
我们知道,MySQL安装完成后默认编码为latin1,并不适合中文应用。因此我们通常用下面的SQL语句创建数据库:
CREATE DATABASE mydb DEFAULT CHARACTER SET utf8 COLLATE utf8_general_ci;
而django测试框架创建测试数据库时并不会像这样指定编码,因此创建的数据库编码为latin1,导致加载UTF8数据时就会出错。
貌似django并没有提供创建数据库时指定编码的选项,因此只能修改MySQL服务器的默认编码设置。下面以MacPorts下的mysql5为例说一下设置方法。
首先复制一份my.cnf到 /opt/local/etc/mysql5:
$ cd /opt/local/etc/mysql5/ $ sudo cp /opt/local/share/mysql5/mysql/my-small.cnf my.cnf
然后编辑my.cnf,在[mysqld]节添加以下两行:
$ sudo vi my.cnf [mysqld] ... collation_server = utf8_general_ci character_set_server = utf8
保存退出后重启mysqld:
$ sudo /opt/local/bin/mysqladmin5 -u root shutdown $ sudo /opt/local/bin/mysqld_safe5 &
这样就可以了。确认一下:
mysql> show variables like \'collation_server\'; +------------------+-----------------+ | Variable_name | Value | +------------------+-----------------+ | collation_server | utf8_general_ci | +------------------+-----------------+ 1 row in set (0.00 sec) mysql> show variables like \'character_set_server\'; +----------------------+-------+ | Variable_name | Value | +----------------------+-------+ | character_set_server | utf8 | +----------------------+-------+ 1 row in set (0.00 sec)
建议继续学习:
- 字符编码和中文乱码小叙 (阅读:6534)
- 中文编码杂谈 (阅读:5771)
- Hadoop的map/reduce作业输入非UTF-8编码数据的处理原理 (阅读:5228)
- PHP编码规范 (阅读:5123)
- Linux screen窗口中文乱码问题 (阅读:4806)
- UTF-8编码中BOM的检测与删除 (阅读:4756)
- base64_encode 和 urlencode (阅读:4736)
- Unicode与字符汉字相互转换 (阅读:4725)
- python-django的中文编码总结 (阅读:4566)
- JAVASCRIPT完美实现UTF8页面提交数据到GB2312 (阅读:4398)
QQ技术交流群:445447336,欢迎加入!
扫一扫订阅我的微信号:IT技术博客大学习
扫一扫订阅我的微信号:IT技术博客大学习
<< 前一篇:用bin日志中恢复MySQL数据库
后一篇:MySQL和MongoDB设计实例对比 >>
文章信息
- 作者:charlee 来源: idv2
- 标签: 编码
- 发布时间:2011-06-02 13:31:54
建议继续学习
近3天十大热文
-
[917] WordPress插件开发 -- 在插件使用 -
[135] 解决 nginx 反向代理网页首尾出现神秘字 -
[54] 整理了一份招PHP高级工程师的面试题 -
[52] Innodb分表太多或者表分区太多,会导致内 -
[52] 海量小文件存储 -
[52] 如何保证一个程序在单台服务器上只有唯一实例( -
[51] 全站换域名时利用nginx和javascri -
[50] 用 Jquery 模拟 select -
[49] CloudSMS:免费匿名的云短信 -
[48] jQuery性能优化指南
