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

 更新时间:2008年11月14日 22:51:59   作者:   我要评论
在使用python写项目的时候,用到了sqlobject库函数connectionForURI连接mysql,但是遇到了中文显示乱码的问题,在添加记录的时候还抛出异常
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

相关文章

  • 从Python的源码来解析Python下的freeblock

    从Python的源码来解析Python下的freeblock

    这篇文章主要介绍了从Python的源码来解析Python下的freeblock,包括内存空间分配等知识,需要的朋友可以参考下
    2015-05-05
  • python实现创建新列表和新字典,并使元素及键值对全部变成小写

    python实现创建新列表和新字典,并使元素及键值对全部变成小写

    今天小编就为大家分享一篇python实现创建新列表和新字典,并使元素及键值对全部变成小写,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-01-01
  • Python入门篇之面向对象

    Python入门篇之面向对象

    面向对象设计(OOD)不会特别要求面向对象编程语言。事实上OOD可以由纯结构化语言来实现,比如C,但如果想要构造具备对象性质和特点的数据类型,就需要在程序上作更多的努力。当一门语言内建OO特性,OO编程开发就会更加方便高效。
    2014-10-10
  • Python爬取数据并写入MySQL数据库的实例

    Python爬取数据并写入MySQL数据库的实例

    今天小编就为大家分享一篇Python爬取数据并写入MySQL数据库的实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-06-06
  • Python 字符串与数字输出方法

    Python 字符串与数字输出方法

    今天小编小编就为大家分享一篇Python 字符串与数字输出方法,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2018-07-07
  • Python初学时购物车程序练习实例(推荐)

    Python初学时购物车程序练习实例(推荐)

    下面小编就为大家带来一篇Python初学时购物车程序练习实例(推荐)。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-08-08
  • python实现内存监控系统

    python实现内存监控系统

    这篇文章主要为大家详细介绍了python实现内存监控系统,通过系统命令或操作系统文件获取到内存信息,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2018-06-06
  • Python基于回溯法子集树模板实现图的遍历功能示例

    Python基于回溯法子集树模板实现图的遍历功能示例

    这篇文章主要介绍了Python基于回溯法子集树模板实现图的遍历功能,结合实例形式分析了Python使用回溯法子集树模板针对图形遍历问题的相关操作技巧与注意事项,需要的朋友可以参考下
    2017-09-09
  • Python读取文件内容的三种常用方式及效率比较

    Python读取文件内容的三种常用方式及效率比较

    这篇文章主要介绍了Python读取文件内容的三种常用方式及效率比较,结合具体实例形式给出了三种文件读取的常见方法并对比分析了读取速度,需要的朋友可以参考下
    2017-10-10
  • Python EOL while scanning string literal问题解决方法

    Python EOL while scanning string literal问题解决方法

    这篇文章主要介绍了Python EOL while scanning string literal问题解决方法,本文总结出是数据库数据出现问题导致这个问题,需要的朋友可以参考下
    2015-04-04

最新评论