最近帮伙计做了一个从网页抓取股票信息并把相应信息存入MySQL中的程序。
使用环境:
Python 2.5 for Windows
MySQLdb 1.2.2 for Python 2.5
MySQL 4.1.22
在写程序中遇到了些怪的故障。
第一个问题:插入中文失败
这个是由于字符编码问题引起的。MySQL安装时我已经设置为utf8编码,表也是使用utf8编码建立。程序中只要在开头写好#-*- coding: utf-8 -*-,并在设定连接字符串时候写清使用utf8就可以了conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8")。设置之后从MySQL中取出的以utf8编码保存的中文也不会发生乱码。
对中文字符串,如:a = "浦发银行",在进行插入操作前做一下编码转换a = a.decode("gbk").encode("utf-8")。然后进行插入操作就没有任何问题了。
第二个问题:能插入之后无法在MySQL中保存刚才插入的数据
经过检查数据可以被正确的插入,但是连接断开之后不保存在表中。经过检查发现原来是漏了conn.commit()。需要在语句执行之后提交操作。
源代码如下。
#-*- coding: utf-8 -*- import sys,MySQLdb conn=MySQLdb.connect(host="127.0.0.1",user="webdb",passwd="web123",db="web",charset="utf8") #需要设定一下charset为utf-8 cursor=conn.cursor() #生成连接的指针对象 #进行字符串编码转换并进行插入 a = "浦发银行" a = a.decode("gbk").encode("utf-8") #编码转换为utf-8 sql="insert into stocklist (stockno,stockname) values (%s,%s)" #生成sql语句 param=('600000',a) #生成sql语句的参数 n = cursor.execute(sql,param) #执行sql语句 #以上操作等价于n = cursor.execute("insert into stocklist (stockno,stockname) values ('430004','"+ "浦发银行".decode("gbk").encode("utf-8") + "')") print n conn.commit() #提交操作结果 #进行查询操作检查刚刚执行的插入操作结果 n = cursor.execute("select * from stocklist") for row in cursor.fetchall(): print row[0] + row[1] cursor.close() #关闭指针 conn.close() #关闭连接
总结
以上所述是小编给大家介绍的Python MySQLdb 使用utf-8 编码插入中文数据问题,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对小牛知识库网站的支持!
本章是由 Alex Cabal 最初撰写在 PHP Best Practices 中的,我们使用它作为进行建议的基础。 这不是在开玩笑。请小心、仔细并且前后一致地处理它。 目前,PHP 仍未在底层实现对 Unicode 的支持。虽然有很多途径可以确保 UTF-8 字符串能够被正确地处理,但这并不是很简单的事情,通常需要对 Web 应用进行全方面的检查,从 HTML 到 SQL 再到 PHP。我们将
我想知道是否有人能帮忙,我很难将UTF-8字符发布到SagePay。数据库是MySQL,带有数据库字符集utf8和数据库排序规则utf8_general_ci。数据库连接字符串使用useUnicode=true 所有发布到数据库的数据都存储为UTF-8,所有查询的数据都显示为UTF-8,但当字符串编码如下时: 然后发到SagePay,他们会收到一个来自国际字符所在位置的乱码字符串。如果字符串中不包
本文向大家介绍php页面,mysql数据库转utf-8乱码,utf-8编码问题总结,包括了php页面,mysql数据库转utf-8乱码,utf-8编码问题总结的使用技巧和注意事项,需要的朋友参考一下 示例一: PHP页面转UTF-8编码问题 1.在代码开始出加入一行: header("Content-Type: text/html;charset=utf-8"); 2.PHP文件编码问题 点击编辑
问题内容: 我试图在Go中找到以下C#代码的等效项。 我知道Go 中有一个crypto / sha1软件包。我知道我可以跑步: 我不确定散列时如何获得正确的编码。我想知道是否可以得到一些帮助来转换此 问题答案: 根据文档: 缺少字节级转义的字符串文字始终包含有效的UTF-8序列。 因此,如果在Golang源代码中,则无需将字符串编码为utf8。但是,如果字符串来自输入,则utf8包是您的朋友。
我在将文本从UTF-8编码转换为UTF-8编码时遇到问题。这里有字节数组, 我正在将其转换为UTF-8字符串并返回字节数组, 据我所知,这是一个3字节的数组。正当但这是我得到的。 这是什么原因?据我所知,在UTF-8 Specials中,2391189组合被称为替换字符。 这也是一个更大问题的一部分。
问题内容: 使用UTF-8编码创建字符串时存在不一致的地方。 运行此代码: 在Java 1.8.0_20(及更早版本)上,我们得到结果 在Java 1.7和1.6上,我们得到正确的结果: 您遇到此错误了吗?有没有解决方法? 对于Shift_JIS,JIS_X0212-1990,x-IBM300,x-IBM834,x-IBM942,x-IBM942C,x-JIS0208来说,这种不一致也很明显,但显