Python学习笔记:中文编码问题
来源:互联网 发布:深圳专业java培训机构 编辑:程序博客网 时间:2024/05/16 15:49
编程环境
用的版本2.7.11,使用notepad++和python的IDLE运行程序。
问题描述
在编写python爬虫时遇到一个问题,对服务器提交post数据时,数据中有中文。
在提交时,如果在.py文件里,直接给某一个字符串赋值为中文,比如
mystr='查询'
服务器的反馈会出现问题。
然而在使用wireshark抓包跟踪通讯逻辑时,找到了某一个post的项的值为'\262\351\321\257'
于是,我进行了如下的测试:
在python的shell中,输入mystr='查询',然后直接输入mystr得到它的编码。
'\xb2\xe9\xd1\xaf'
输入mystr='\262\351\321\257' ,然后输入mystr得到同样的回答
'\xb2\xe9\xd1\xaf'
居然是一样的。
我对自己的python程序进行了抓包,发现post数据中该项是一个9位的编码,肯定是编码方式出现了问题。
基础知识
这里需要知道中文在不同的编码方式里编码是不同的,常见的有gb2312和utf-8
notepad++对源程序的.py文件使用utf-8来进行编码,也就是说先把中文转化成utf8的编码,再进行储存。
python的编译器在读取某个.py文件时也是按照utf-8的原则读取的。
网页中的中文,读取html代码之后,会发现是中文是按照gb2312编码。
所以这里猜测python的shell使用gb2312来编码的,也就是和网页是同样的,这就是为什么使用shell和文件里,同样的包含中文代码,却有不同的执行效果。
解决方案
在文件中,使用如下语句,首先,先解码成utf-8,然后再编码成gb2312。这样可以使他保持和网页同样的编码。
对于涉及到中文的正则表达式,如果网页使用gb2312,那么正则表达式中的中文也需要按照如下的方法先转换编码,再执行查找。
mystr='查询'.decode('utf-8').encode('gb2312')
0 0
- Python学习笔记:中文编码问题
- python 学习笔记-----编码问题
- Python学习笔记 --- 编码问题
- python 中文编码 问题
- Python 中文编码问题
- Python 中文 编码问题
- python中文编码问题
- python 中文编码问题
- python中文编码问题
- python 中文编码问题
- python中文编码问题
- python中文编码问题
- python中文编码问题
- python中文编码问题
- python中文编码问题
- Python中文编码问题
- python中文编码问题
- Python中文编码问题
- IntelliJ IDEA下Maven项目的初部署
- iOS版本控制工具(SVN,GIT,SourceTree)
- MySQL 加锁处理分析
- iOS使用WebView简单地应用内显示网页
- android activity 应该知道的一切
- Python学习笔记:中文编码问题
- kafka的集群安装及配置文件说明
- HDOJ 1789 Doing Homework again
- Unity将文本复制到剪切板
- 安卓初识基本控件_SeekBar
- 启动外部exe文件
- python实现用程序给自己发邮件
- 移位运算符
- 关于Android的.so文件