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

相关文章

  • 使用Pytorch来拟合函数方式

    使用Pytorch来拟合函数方式

    今天小编就为大家分享一篇使用Pytorch来拟合函数方式,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-01-01
  • python支持多线程的爬虫实例

    python支持多线程的爬虫实例

    今天小编就为大家分享一篇python支持多线程的爬虫实例,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2019-12-12
  • python 解决微分方程的操作(数值解法)

    python 解决微分方程的操作(数值解法)

    这篇文章主要介绍了python 解决微分方程的操作(数值解法),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教
    2021-05-05
  • OpenCV和Pyzbar检测二维码和条码

    OpenCV和Pyzbar检测二维码和条码

    在现代社会,二维码和条码的应用非常广泛,从商品标签到支付二维码,本文将详细介绍如何使用 OpenCV 和 Pyzbar 库在 Python 中检测并识别二维码和条码,需要的可以参考下
    2024-11-11
  • java字符串格式化输出实例讲解

    java字符串格式化输出实例讲解

    在本篇文章里小编给大家整理的是一篇关于java字符串格式化输出实例讲解,有需要的朋友们可以学习下。
    2021-01-01
  • 简单了解pytest测试框架setup和tearDown

    简单了解pytest测试框架setup和tearDown

    这篇文章主要介绍了简单了解pytest测试框架setup和tearDown,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友可以参考下
    2020-04-04
  • 在Python同步方法中调用异步方法不阻塞主流程的几种方案

    在Python同步方法中调用异步方法不阻塞主流程的几种方案

    这篇文章主要介绍了在Python同步方法中调用异步方法不阻塞主流程的几种方案,包括使用asyncio.create_task()、threading和concurrent.futures,文中通过代码介绍的非常详细,需要的朋友可以参考下
    2025-03-03
  • python对一个数向上取整的实例方法

    python对一个数向上取整的实例方法

    在本篇文章中小编给大家整理了关于python对一个数向上取整的实例方法,需要的朋友们可以跟着学习下。
    2020-06-06
  • 使用Python实现获取网页指定内容

    使用Python实现获取网页指定内容

    在当今互联网时代,网页数据抓取是一项非常重要的技能,本文将带你从零开始学习如何使用Python获取网页中的指定内容,希望对大家有所帮助
    2025-03-03
  • Python实现周日历与时间相互转换

    Python实现周日历与时间相互转换

    周日历是日常生活中不常用到的历法系统,一般用于政府、商务的会计年度或者学校教学日历中。本文为大家介绍了如何利用Python语言实现周日历与时间相互转换,感兴趣的可以学习一下
    2022-07-07

最新评论