当前位置: 移动技术网 > IT编程>脚本编程>Python > python sqlobject(mysql)中文乱码解决方法

python sqlobject(mysql)中文乱码解决方法

2019年04月05日  | 移动技术网IT编程  | 我要评论

维平网,版娘mm大作战,牛奶怎么喝最有营养

unicodeencodeerror: 'latin-1' codec can't encode characters in position;
找了一天终于搞明白了,默认情况下,mysql连接的编码是latin-1,你需要指定使用什么编码方式:
connectionforuri(mysql://user:password@localhost:3306/eflow?use_unicode=1&charset=utf8)

python mysql 中文乱码 的解决方法,有需要的朋友不妨看看。
 
先来看一段代码:

复制代码 代码如下:

import mysqldb
  db_user = "tiger"
  db_pw = "tiger"
  db = mysqldb.connect(host="localhost", user=db_user, passwd=db_pw ,db="finaltldw",charset="gb2312")
  c = db.cursor()
  c.execute("""select id, name from nodes""")
  i=0;
  for id, name in c.fetchall():
   print "%2d %s" % (id, name)
   i=i+1
   if i==100:
   break

返回结果:
  1 top
  2 教育
  3 机构
  4 人
  5 地区
  6 单位
  7 科学研究
  8 实验室
  9 类型
    
  如果编码是utf-8
  转载一个解决方案: 其中的use db
  
  python操作mysql以及中文乱码的问题
  python操作mysql需要安装python-mysql
  可以从网上搜索一下,和一般的python包一样安装
  
  安装好之后,模块名字叫做mysqldb ,在window和linux环境下都可以使用,试验了一下挺好用,
  不过又发现了烦人的乱麻问题,最后用了几个办法,解决了!
  
  我用了下面几个措施,保证mysql的输出没有乱麻:
   1 python文件设置编码 utf-8 (文件前面加上 #encoding=utf-8)
   2 mysql数据库charset=utf-8
   3 python连接mysql是加上参数 charset=utf8
   4 设置python的默认编码为 utf-8 (sys.setdefaultencoding(utf-8)
  mysql_test.py 

复制代码 代码如下:

#encoding=utf-8
  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.write(str(i))
   f.write(" ")
  
  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

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网