转自文章 http://blog.sina.com.cn/s/blog_633277f90100kurv.html
一、MySQLdb中文乱码问题的解决(Python)
写了一个简单的脚本,将我的数据整理到Mysql中去。遇到了乱码问题,改了一下,很快就解决了。连接mysql时要注意注明是utf-8字符集,所有中文都要是utf-8,如果有GBK也要先转换成utf-8,把握这个原则,中文乱码问题是不会有的。
转换脚本如下:
#-*- coding: utf-8 -*-,
#coding = utf-8
import MySQLdb,os
def wgdata2DB():
二、Python中插入MySQL中文乱码的问题
mysql的默认编码为latin1,查找mysqldb的源码关键报错的地方是cursor.execute,这里要执行一下encode(charset),既然这里要encode,那就在外面先decode一下,果然什么都不改,在自己的调用函数里做decode。
sql = 'insert into aa values('测试')'
sql = sql.decode('latin1')
cursor.execute(sql)
三、Python操作MySQL以及中文乱码的问题
我用了下面几个措施,保证MySQL的输出没有乱麻:
Python操作MySQL需要安装Python-MySQL
可以从网上搜索一下,和一般的Python包一样安装
安装好之后,模块名字叫做MySQLdb ,在Window和Linux环境下都可以使用,试验了一下挺好用,
不过又发现了烦人的乱麻问题,最后用了几个办法,解决了!
我用了下面几个措施,保证MySQL的输出没有乱麻:
mysql_test.py
import sys
import MySQLdb
reload(sys)
sys.setdefaultencoding('utf-8')
db=MySQLdb.connect(user='root',charset='utf8')
cur=db.cursor()
cur.execute('use mydb')
cur.execute('select * from mytb limit 100')
f=file("/home/user/work/tem.txt",'w')
for i in cur.fetchall():
f.close()
cur.close()
上面是linux上的脚本,windows下运行正常!
注:MySQL的配置文件设置也必须配置成utf8
设置 MySQL 的 my.cnf 文件,在[client]/[mysqld]部分都设置默认的字符集(通常在/etc/mysql/my.cnf):
[client]default-character-set =utf8[mysqld]default-character-set = utf8
本文来自CSDN博客,转载请标明出处:http://blog.csdn.net/foyuan/archive/2007/07/27/1711100.aspx