python2.7.9读取csv的其中一列得到这样的结果:
\xc9\xcc\xc6\xb7\xb2\xe2\xca\xd4
导致存储到mysql也是这个十六进制串
我怎么才能存储为中文?
with open('123.csv','rb') as cf:
reader = csv.reader(cf)
for row in reader:
if reader.line_num==240:
list1=['tradeTime','productName']
tradeTime=row[0].replace('','') <br /> productName=row[20].replace('
','').encode("gb2312")
list2=[tradeTime,productName]
logging.debug("productName={0}".format(productName))
sorderData=dict(zip(list1,list2))
logging.debug(sorderData)
日志如下:
2015-05-28 13:26:33,244 productName=商品测试
2015-05-28 13:26:33,244 {'tradeTime': '2015-05-15 11:06:47', 'productName': '\xc9\xcc\xc6\xb7\xb2\xe2\xca\x
导致存储到数据库中的'productName为\xc9\xcc\xc6\xb7\xb2\xe2\xca\xd4
请问如何存储为“商品测试”
productName=row[20].replace('`','').encode("gb2312")
原因是这里,你将内容从unicode转成了gb2312
在Windows下测试的结果是:
productName=row.replace('`','').decode("utf-8"),结果正常
在Linux下如果使用以上语句,返回的是二进制,后更改为:
productName=row.replace('`','').decode("gb2312") ,结果正常
感谢“雪梨苹果”
######检查下编码,,,
productName=row[20].replace('`','').encode("gb2312")
原因是这里,你将内容从unicode转成了gb2312
######过程就是:先知道csv是什么编码的,然后读取,将数据decode成unicode,处理完传给mysql就行,不需要你自己encode的。######在读入CVS时就指定编码格式参数,再插入数据库就如你所愿了。版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。