python django MySQLdb 连接 mysql 5.5 中文乱码问题的解决
来源:互联网 发布:一根糯玉米的热量知乎 编辑:程序博客网 时间:2024/05/18 02:03
mysql> SHOW VARIABLES LIKE 'character%';
+----------------------------------------+-------------------------
| Variable_name
+----------------------------------------+-------------------------
| character_set_client
|character_set_connection | latin1
|character_set_database | utf8
| character_set_filesystem | binary
| character_set_results
| character_set_server
| character_set_system
| character_sets_dir
+----------------------------------------+-------------------------
8 rows in set (0.00 sec)
mysql>SHOW VARIABLES LIKE 'collation_%';
+---------------------------------------+------------------
| Variable_name
+---------------------------------------+------------------
| collation_connection
| collation_database
| collation_server
+--------------------------------------+------------------
3 rows in set (0.00 sec)
从中我们可以看出,整个编码中,不全是utf8编码的。这样就会造成一些问题,例如:我们抓取的中文是utf8编码的,然后传给mysql,但是mysql的connection和server都是latin1编码的,而表示utf8,于是提交的utf8中文内容,会先被latin1编码,然后再由utf8编码。如果这样的话,再用第三方软件访问数据库就会出现问题,例如用phpadmin等,访问的虽然是utf8内容,但是是由latin1编码过后的utf8字符,不免会出现问题。
解决的方式:当然就是编码统一,全部采用utf8编码方式。如何更改?这里只介绍mysql5.5 以上的修改方式,我的mysql是5.5.29的。修改方式如下:
打开mysql配置文件:sudovim /etc/mysql/my.cnf
[mysqld]
character-set-server=utf8
collation-server=utf8_general_ci
[client]
default-character-set=utf8
在配置文件中,对应的标签中,添加以上字符编码内容。
之后重启mysql服务:sudo/etc/init.d/mysql restart
如果重启成功,说明配置文件没有问题,如果重启失败,说明配置文件有问题,可能你用的mysql版本不是如上的修改方式,可以上网查对应版本的utf8编码的修改方式。
这样,在用刚才的方式查看SHOWVARIABLES LIKE '%char%';,应该都是utf8编码了。(有一个是binary编码的,不用管)
读取时候的编码定义
例如在用MySQLdb读取数据库内容时候,可以定义读取数据库的编码方式:
MySQLdb.connect(server, user, passwd, dbname,charset="utf8")
另外在python头部也可以定义一些中文编码的方式,例如:
#-*- coding: UTF-8 -*-
importsys
reload(sys)
sys.setdefaultencoding('utf8')
总之,在整个过程中,一定要保持编码方式的统一,从网上抓取下来的数据,也要先encode一下,整个过程中如果编码都是utf8,那无论怎么读取都不会出现乱码啦。
#http://blog.sina.com.cn/s/blog_4aa65a3f01018xgk.html
- python django MySQLdb 连接 mysql 5.5 中文乱码问题的解决
- python MySQLdb中文乱码解决
- Python mysqldb 操作mysql出现中文乱码问题
- 【Python】Mysql中文乱码问题与MySQLdb对Mysql操作类的改进
- Python调用MySQLdb插入中文乱码的问题
- Python调用MySQLdb插入中文乱码的问题
- python mysqldb 查询数据,中文乱码问题
- ODBC连接MySQL时中文乱码问题的解决
- 关于python连接mysql中文乱码问题
- 解决mac平台的mysql+python的中文乱码问题
- python操作mysql数据库如何解决中文乱码的问题
- 解决 django+mysql 的乱码问题
- mysql连接中的中文乱码的解决
- Openstack数据库中文乱码问题---Django Python SQLAlchemg MySQL
- python MySQLdb连接mysql失败问题
- Python连接MYSQL --- MySQLdb
- Django连接mysql 出现No module named ‘MySQLdb’.问题
- Hibernate连接MySQL的中文乱码问题:
- MySQL主从复制(Master-Slave)与读写分离(MySQL-Proxy)实践
- 如何旋转在Visio中的文字(或文本)
- HDU2767(Proving Equivalences)-有向图的强连通问题+Tarjan算法
- map中key为结构体的用法
- VS2008中所有快捷键
- python django MySQLdb 连接 mysql 5.5 中文乱码问题的解决
- 九度Online Judge_1527: 首尾相连数组的最大子数组和
- hdu 1250
- min-height对ie6, 7, 8及ff的兼容
- SQL Server连接Oracle详细步骤
- MongoDB学习笔记1(入门)
- Hdu 1757 A Simple Math Problem//矩阵乘法
- MongoDB学习笔记2(数据操作)
- C语言中闭包的探究及比较