python编码问题、乱码问题
2015-12-31 17:24
567 查看
插入中文内容到本地MySQL数据库乱码问题的解决
首先我查到一条插入数据库的sql语句,如下:
title = '中文'
sql = '''INSERT INTO articles(name, url) VALUES ('%s', '%s')''', (title, url)
很悲催的是我失败了,通过打印sql,发现title并不是我要的‘中文’
结果如下:
("INSERT INTO articles(name,url) VALUES ('%s', '%s')", ('\xe4\xb8\xad\xe6\x96\x8
7', u'/cn/news/2015/12/mobile-fragmentation-issues'))
接下来我就不停的decode和encode。。。。
当然在解决编码问题之前,最原则的就是要搞清你的内容到底是什么编码方式,然后再进行上述操作,今天主要讲的是我的一个很巧妙的解决,请看:
sql = '''INSERT INTO articles(name, url) VALUES ('%s', '%s')''' % (title, url)
程序中其他编码问题
第一步:确定你的数据是什么类型,有两种方式可以采用——1.type(data)
/
2.isinstance(data, unicode)也就是说这种方式只能判断你的data是不是Unicode
python的内部是使用unicode来处理的,当python要做编码转换的时候,应该先转化为Unicode,再转化成目的编码,转换过程是这样的:
原有编码 -> 内部编码 -> 目的编码
第二步:在python编码前两行加入下面的编码信息
#-*- coding: utf8 -*-
此时便可正常打印输出中文字符串
但是仅仅这样并不足够,尤其在你做爬虫程序,从页面爬了很多中文字符进来后,打印的不是乱码就是\xx这样的东西,那如果是python2,我们只需要在import模块时,加上如下的代码,python3中就不需要了。
import sys
reload(sys)
sys.setdefaultencoding('utf8')
此外如果是从文件读取,尽量不要使用file.open打开文件,而是采用codecs.open,这样可以指定解码的类型
input文件(gbk, utf-8...) ----decode-----> unicode -------encode------> output文件(gbk, utf-8...)
很多文本挖掘的package是在unicode上边做事的,比如nltk. 所以开始读入文件后要decode为unicode格式,可以通过下边两步:
f=codecs.open(XXX, encoding='utf-8')
content=f.read()
首先我查到一条插入数据库的sql语句,如下:
title = '中文'
sql = '''INSERT INTO articles(name, url) VALUES ('%s', '%s')''', (title, url)
很悲催的是我失败了,通过打印sql,发现title并不是我要的‘中文’
结果如下:
("INSERT INTO articles(name,url) VALUES ('%s', '%s')", ('\xe4\xb8\xad\xe6\x96\x8
7', u'/cn/news/2015/12/mobile-fragmentation-issues'))
接下来我就不停的decode和encode。。。。
当然在解决编码问题之前,最原则的就是要搞清你的内容到底是什么编码方式,然后再进行上述操作,今天主要讲的是我的一个很巧妙的解决,请看:
sql = '''INSERT INTO articles(name, url) VALUES ('%s', '%s')''' % (title, url)
程序中其他编码问题
第一步:确定你的数据是什么类型,有两种方式可以采用——1.type(data)
/
2.isinstance(data, unicode)也就是说这种方式只能判断你的data是不是Unicode
python的内部是使用unicode来处理的,当python要做编码转换的时候,应该先转化为Unicode,再转化成目的编码,转换过程是这样的:
原有编码 -> 内部编码 -> 目的编码
第二步:在python编码前两行加入下面的编码信息
#-*- coding: utf8 -*-
此时便可正常打印输出中文字符串
但是仅仅这样并不足够,尤其在你做爬虫程序,从页面爬了很多中文字符进来后,打印的不是乱码就是\xx这样的东西,那如果是python2,我们只需要在import模块时,加上如下的代码,python3中就不需要了。
import sys
reload(sys)
sys.setdefaultencoding('utf8')
此外如果是从文件读取,尽量不要使用file.open打开文件,而是采用codecs.open,这样可以指定解码的类型
input文件(gbk, utf-8...) ----decode-----> unicode -------encode------> output文件(gbk, utf-8...)
很多文本挖掘的package是在unicode上边做事的,比如nltk. 所以开始读入文件后要decode为unicode格式,可以通过下边两步:
f=codecs.open(XXX, encoding='utf-8')
content=f.read()
相关文章推荐
- Python 2.4 递归函数
- 简单实现python爬虫功能
- python 中文乱码问题
- 管理后台-后端-Python篇
- python实现颜色空间转换程序(Tkinter)
- python 解析xml 文件: Element Tree 方式
- 基于python的Tkinter实现一个简易计算器
- 简明Python学习笔记之二--第一个Hello word!
- The Hacker's Guide To Python 单元测试
- python文件操作
- Python特殊语法:filter、map、reduce、lambda [转]
- python实现爬虫统计学校BBS男女比例之数据处理(三)
- python两个列表合并
- Python学习笔记——dict和set
- ZendStudio 安装python IDE 开发插件
- 【Python】批量下载新浪微博某用户的头像相册
- 关于python 时间转换相关
- Python写黑客小工具,360免杀
- python lxml包学习笔记
- python 解析xml 文件: DOM 方式