Python解决插入数据库乱码问题

从网站上获取的信息要保存在本地数据库中,但是保存的过程中数据库的信息都变成了乱码,怎么解决呢?客官听我娓娓道来。

  首先,保证以下四项的编码都是utf-8:

  1. 代码

  2. 数据库连接

  3. 表的字符集格式

  4. 插入的数据格式

  每步的操作如下:

  1. 保证代码的格式是utf-8,在代码最前面加上这句话

  # -*- coding:utf8 -*-

  #首先用于确定编码,加上这句

  2. 保证数据库连接格式是utf-8,这么写

  conn=MySQLdb.connect(host='localhost',user='root',passwd='****',db='kfxx',port=3306,charset='utf8')

  cur=conn.cursor()

  3. 保证表的字符集格式是utf-8,在建表的时候就能设置

  4. 保证插入的数据格式是utf-8,分为保证读取的页面格式是utf-8和字符串格式也是utf-8

  #解决乱码问题


html_1 = urllib2.urlopen(cityURL,timeout=120).read()

mychar = chardet.detect(html_1)

bianma = mychar['encoding']

if bianma == 'utf-8' or bianma == 'UTF-8':

html = html_1

else :

html = html_1.decode('gb2312','ignore').encode('utf-8')


chapter_soup = BeautifulSoup(html)

city = chapter_soup.find('div',class_ = 'row-fluid').find('h1').get_text()

province = chapter_soup.find('a',class_ = 'province').get_text()

pmNum = chapter_soup.find('div',class_ = 'row-fluid').find('span').get_text()

suggest = chapter_soup.find('div',class_ = 'row-fluid').find('h2').get_text()

rand = chapter_soup.find('div',class_ = 'row-fluid').find('h2').find_next_sibling('h2').get_text()

face = chapter_soup.find('div',class_ = 'span4 pmemoji').find('h1').get_text()

conclusion = chapter_soup.find('h1',class_ = 'review').get_text()

print city.encode('utf-8')

cur.execute('insert into t_pm values(\''+city.encode('utf-8')

+'\',\''+province.encode('utf-8')

+'\',\''+pmNum.encode('utf-8')

+'\',\''+suggest.encode('utf-8')

+'\',\''+rand.encode('utf-8')

+'\',\''+conclusion.encode('utf-8')+'\')')

  完成,插入的数据都是中文了,看效果图:

最新内容请见作者的GitHub页:http://qaseven.github.io/

时间: 2024-11-02 06:52:40

Python解决插入数据库乱码问题的相关文章

Python写MySQL数据库乱码

MySQL数据库的默认编码已经设置为utf8了,在python程序内也已经把字符串的编码转换成了utf8,可是通过MySQLdb插入数据库后,显示的还是一堆乱码. 后来发现是建立数据库连接时的问题: conn = MySQLdb.connection(host="localhost", user="root", passwd="password", db="test", use_unicode=True, charset=&q

Python连接mssql数据库乱码(中文变问号)解决方法

python一直对中文支持的不好,最近老遇到编码问题,而且几乎没有通用的方案来解决这个问题,但是对常见的方法都试过之后,发现还是可以解决的,下面总结了常用的支持中文的编码问题(这些方法中可能其中一个就能解决问题,也可能是多个组合). (1).首先,要保证文件的开头要加上编码设置来说明文件的编码  代码如下 复制代码 #encoding=utf-8 (2).然后,在连接数据的连接参数里加上字符集说明查询出的结果的编码,这个不加的后果可能是查询出的汉字字符都是问号  代码如下 复制代码 conn=p

如何解决Sybase数据库乱码问题详解

  搭建测试数据库服务器时,遇到了乱码问题,之前没有遇到是因为开发数据库服务器是早就安装好并设置好字符集的,因此些问题在部署测试环境时才出现,当时已经将数据库配置完毕,并且所有的初始化脚本都已经执行完毕,工程也已经成功部署在WebLogic上,打开IE,运行程序,却发现所有从数据库中读取出来的都是乱码,经过上网搜索的相关资料,需要设置字符集,但刚开始查找到的资料基本是都是支言片语,没有一个系统的讲解如何设置字符集,几乎将他们所有的方法都试过了,结果不但没有弄好,甚至连控制台和SQL平台都是乱码了

ckeditor插入数据,数据库乱码

问题描述 使用ckeditorFCKeditor实现用户留言评论功能页面导入js已经设置编码<script type="text/javascript" src="ckeditor/ckeditor.js" charset="utf-8"></script>在jsp与action当中也同意设置了编码utf-8另外数据库也是utf-8编码格式但是现在插入数据库乱码求解页面显示效果留言作者 游客 留言时间2011-05-11

php网mysql数据库插入数据乱码问题?

问题描述 php网mysql数据库插入数据乱码问题? 我php页面是设置为 <meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> 数据库的编码也是utf8 Variable_name Value character_set_client utf8 character_set_connection utf8 character_set_database utf8 char

mysql数据库乱码大家一般怎么解决?

问题描述 mysql数据库乱码大家一般怎么解决? 解决方案 (1)检查你的文件存储编码是否和 meta 声明的一致,假如你的文件是按照 utf-8 编码存储,但是 meta 却声明为 gb2312 ,将导致乱码.解决办法:将页面存储编码和 meta 声明保持一致.用记事本打开文件,"另存为",下面有个选项是"编码",选择和 meta 声明一致的编码方式.(提示:meta 的编码声明要放在 title 标签前面,否则容易导致页面空白.)(2)检查你的数据库连接有没有设

Python中MYSQLdb出现乱码的解决方法_python

本文实例讲述了Python中MYSQLdb出现乱码的解决方法,分享给大家供大家参考.具体方法如下: 一般来说,在使用mysql最麻烦的问题在于乱码. 查看mysql的编码: 命令:  复制代码 代码如下: show variables like 'character_set_%'; 可以看到如下结果: character_set_client为客户端编码方式: character_set_connection为建立连接使用的编码: character_set_database数据库的编码: ch

全面解决--如何获得刚插入数据库的记录的ID号?

插入|解决|数据|数据库 如何获得刚插入数据库的记录的ID号? 1.SQL Server 对于SQL Server 2000来说,它提供了两个全新的函数(IDENT_CURRENT,SCOPE_IDENTITY),并且改进了@@IDENTITY的不足.当你插入新记录后,可以调用函数: PRINT IDENT_CURRENT('table') '这将获得新的IDENTITY值,不管数据库中是不是有记录添加(这就避免了@@IDENTITY的连接限制) 或者:PRINT SCOPE_IDENTITY(

thinkphp3查询mssql数据库乱码解决方法

 这篇文章主要介绍了thinkphp3查询mssql数据库乱码解决方法,需要的朋友可以参考下 thinkphp查询mssql数据库出现乱码的原因是ThinkPHP默认为UTF-8,而msmsql数据库是简体中文版,存储的是GB2312编码   解决方法:   1:在ThinkPHPLibCore 打开Db.class.php,在其最后面加上 2:在Db.class.php找到function select(),在$result = $this->query($sql);后面加一条 $result