python字符集的转换(mysql数据乱码的处理)
内容导读
互联网集市收集整理的这篇技术教程文章主要介绍了python字符集的转换(mysql数据乱码的处理),小编现在分享给大家,供广大互联网技能从业者学习和参考。文章包含2954字,纯文字阅读大概需要5分钟。
内容图文
!/usr/bin/env python # _*_ encoding:utf-8 _*_ ‘‘‘ author: tiantiandas ‘‘‘ import sys reload(sys) sys.setdefaultencoding(‘gbk‘) import MySQLdb def Connect_Mysql(sql,host): db_info = {‘host‘: host, ‘user‘: ‘test‘, ‘db‘: ‘TestDB‘, ‘passwd‘: ‘dnstest‘, ‘charset‘:‘gbk‘} #很关键 try: connect = MySQLdb.connect(**db_info) cursor = connect.cursor() cursor.execute(sql) connect.commit() result = cursor.fetchone() return result except Exception as e: print e sys.exit(10) def main(): domain = sys.argv[1] query = ‘select Name,AdminDesc from EmailBox where Domain="{0}"‘.format(domain) try: Name, AdminDesc = Connect_Mysql(sql=query,host="host1") update = "update EmailBox set Name=‘{0}‘,AdminDesc=‘{1} where Domain=‘{2}‘".format(Name,AdminDesc) try: print update Connect_Mysql(sql=update,host=‘host2‘) except Exception as e: print e except Exception as e: print e if __name__ == ‘__main__‘: main()- sys.setdefaultencoding(‘gbk‘) : 这段代码让从A库拉出的数据,python会将其解码为成gbk。(大概是这个意思)
- mysql编码: charset:gbk :这个调整让写入到库中的数据字符集为gbk
2.关于编码和解码
- chardet模块
- chardet是字符编码识别的模块,使用如下:
-
#!/usr/bin/env python # _*_ encoding:utf-8 _*_ import chardet a="天天" print chardet.detect(a) 结果: {‘confidence‘: 0.75249999999999995, ‘encoding‘: ‘utf-8‘}
- 如果要对一个大文件进行编码识别,如下的方法,可以提高识别速度:(相比第一种,这种确实会快一些)
-
import urllib from chardet.universaldetector import UniversalDetector usock = urllib.urlopen(‘http://www.baidu.com/‘) #创建一个检测对象 detector = UniversalDetector() for line in usock.readlines(): #分块进行测试,直到达到阈值 detector.feed(line) if detector.done: break #关闭检测对象 detector.close() usock.close() #输出检测结果 print detector.result 运行结果: {‘confidence‘: 0.99, ‘encoding‘: ‘GB2312‘}
- 有了chardet模块,就可以识别获取数据的字符集格式,之后就可以将数据转换为想要的字符集格式了。
- 两个函数:
- decode:可以将数据解码为想要的字符集格式
- encode:可以将数据编码为想要的字符集格式
- python识别的是unicode,所以是用decode现将数据转换为unicode,之后再用encode将数据转换为想要的字符集。
- 测试代码:
-
>>> name="天天" >>> name ‘\xe5\xa4\xa9\xe5\xa4\xa9‘ #天天 汉字的gbk码 >>> b=name.decode(‘gbk‘) >>> b u‘\u6fb6\u2541\u3049‘ >>> c=b.encode(‘utf8‘) >>> c ‘\xe6\xbe\xb6\xe2\x95\x81\xe3\x81\x89‘ —————————————————————————— >>> ‘\xcc\xec\xcc\xec‘.decode(‘gbk‘) u‘\u5929\u5929‘ >>> ‘\xcc\xec\xcc\xec‘.decode(‘gbk‘).encode(‘utf8‘) ‘\xe5\xa4\xa9\xe5\xa4\xa9‘ >>> ‘天天‘ ‘\xe5\xa4\xa9\xe5\xa4\xa9‘
python字符集的转换(mysql数据乱码的处理)
标签:乱码问题 passwd 数据转换 try 提高 pen bsp pre admin
本文系统来源:http://www.cnblogs.com/tiantiandas/p/python-charset.html
内容总结
以上是互联网集市为您收集整理的python字符集的转换(mysql数据乱码的处理)全部内容,希望文章能够帮你解决python字符集的转换(mysql数据乱码的处理)所遇到的程序开发问题。 如果觉得互联网集市技术教程内容还不错,欢迎将互联网集市网站推荐给程序员好友。
内容备注
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 gblab@vip.qq.com 举报,一经查实,本站将立刻删除。
内容手机端
扫描二维码推送至手机访问。