python开头编码cc手_python的编码问题整理
一、编码和解码
1、编码(encode):将人类可以识别的语言(英文、中文等)转化成机器语言(01串)的过程,用于存储。
2、解码(decode):将机器语言转化成人类可识别的语言的过程,用于显示。
编码类型
1、ASCII编码:最早使用的编码方式
2、GBK编码:为了兼容中文,非ASCII编码
3、unicode编码:为了兼容所有语言,从ASCII扩展而来
4、utf-8编码:为了节省空间,对unicode的优化
二、py2中的string编码
1、python2默认的是ASCII编码方式
2、unicode是真正意义上的字符串;str是字节串。
3、乱码处理
1)cmd中的乱码
现象:
新建hello.py文件,内容如下
1 #coding:utf-8
2 print '果果'
在cmd中运行python hello.py
解决方法:中文前增加“u”
1 #coding=utf-8
2 print u"果果"
运行结果
原因
我们在win下的终端即cmd.exe去执行,cmd.exe本身也一个软件;当我们python2 hello.py时,python2解释器(默认ASCII编码)去按声明的utf8编码文件,而文件又是utf8保存的,所以没问题;问题出在当我们print'苑昊'时,解释器这边正常执行,也不会报错,只是print的内容会传递给cmd.exe用来显示,而在py2里这个内容就是utf8编码的字节数据,可这个软件默认的编码解码方式是GBK,所以cmd.exe用GBK的解码方式去解码utf8自然会乱码。
2)open()中的乱码
现象:
创建hello文本,保存成utf8:
我爱中国
代码如下
1 #coding=utf-8
2 f=open('hello.txt')3 print f.read()
运行结果
C:\Python27\python.exe E:/pyClass/temp/hello.py
鎴戠埍涓浗
解决:
open()中加入encoding='utf-8'关键字参数,但是open()方法没有此参数;使用codecs.open(),代码如下:
1 #coding=utf-8
2 importcodecs3 f=codecs.open('hello.txt',encoding='utf8')4 print f.read()
运行结果
C:\Python27\python.exe E:/pyClass/temp/hello.py
我爱中国
原因:
win的操作系统安装时是默认的gbk编码,当执行open函数时,调用的是操作系统打开文件,操作系统用默认的gbk编码去解码utf8的文件,自然乱码。
4、对于Python代码中避免遇到编码问题,有一些小建议:
字符编码声明:在代码开头声明编码格式
使用codecs的open函数处理文本文件
尽可能使用unicode而不是str:在所有字符串的引号前加u
三、py3的string编码
1、py3默认编码方式utf-8
2、str类型存unicode数据,bytse类型存bytes数据
3、乱码处理
1)cmd打印中文,不存在乱码问题
2)open()文件乱码问题,处理同py2
3)网页的编码
1 #coding=utf-8
2 importrequests3
4 res = requests.get("http://www.baidu.com")5 data =res.content6 print(data)7 print(type(data))
运行结果
"C:\Program Files\Python36\python3.exe" E:/pyClass/temp/hello.py
b'\r\n
\xe7\x99\xbe\xe5\xba\xa6\xe4\xb8\x80\xe4\xb8\x8b\xef\xbc\x8c\xe4\xbd\xa0\xe5\xb0\xb1\xe7\x9f\xa5\xe9\x81\x93
\xe5\x85\xb3\xe4\xba\x8e\xe7\x99\xbe\xe5\xba\xa6 About Baidu
©2017 Baidu \xe4\xbd\xbf\xe7\x94\xa8\xe7\x99\xbe\xe5\xba\xa6\xe5\x89\x8d\xe5\xbf\x85\xe8\xaf\xbb \xe6\x84\x8f\xe8\xa7\x81\xe5\x8f\x8d\xe9\xa6\x88 \xe4\xba\xacICP\xe8\xaf\x81030173\xe5\x8f\xb7
\r\n'
要正常显示的话,需要要使用decode()方法
1 #coding=utf-8
2 importrequests3
4 res = requests.get("http://www.baidu.com")5 data =res.content6 print(data.decode('utf-8'))
4、requests返回gbk乱码问题
现象:使用requests模块,发送请求,返回解码时报错
UnicodeEncodeError: 'gbk' codec can't encode character '\xab' in position 18864: illegal multibyte sequence
解决:修改python的默认编码,增加如下代码
1 #coding=utf-8
2 importio3 importsys4 importrequests5
6 sys.stdout=io.TextIOWrapper(sys.stdout.buffer,encoding='gb18030')
原因:
win7的默认编码格式是:gbk
cmd——chcp——936
python3的默认编码格式:utf-8
>>> sys.getdefaultencoding()
'utf-8'
python开头编码cc手_python的编码问题整理相关推荐
- python编码转换在线_Python字符编码转换Unicode和str
## str 我们平时写的用引号括起来的字符串都是str类型的. >>> x = '哈哈' >>> x '\xb9\xfe\xb9\xfe' ### 根据上面的打印 ...
- python编码转换规范_Python转载[编码规范]
转自:http://blog.csdn.net/lanphaday/article/details/6601123 但是有些如果与python自带的类库有冲突的做了适当的修改. 1 编码 >&g ...
- python中打开文件提示编码当时错误_Python:文件编码错误
从几天开始,我就在用Python编写的小程序中处理这个烦人的问题.在 我经常使用MediaWiki-最近我做文档从.doc到Wikisource的转换.在 在Libre Office中打开micros ...
- python 编码解码原理_Python的编码解码问题
这两天进行网抓,被python的编解码问题搞得一脸懵比,虽然网上能够搜到各种各样的解决方案,不乏从原理到实践的精品,然而似乎却并不奏效,经自行摸索,本文特针对编解码问题,作以下最简单却最实用的总结: ...
- python requests编码的问题_python requests 编码问题
url = host + path headers = {...} data = {...} files = {...} files两种类型: 字典和 元组 { "field1" ...
- python基础知识500题_python爬虫基础知识点整理
更多编程教程请到:菜鸟教程 https://www.piaodoo.com/ 友情链接: 高州阳光论坛https://www.hnthzk.com/ 人人影视http://www.sfkyty.com ...
- python面向对象大段代码_python面向对象部分简单整理
面向对象 VS 面向过程 面向过程 面向过程的程序设计的核心是过程(流水线式思维) 优点: 极大的降低了写程序的复杂度 缺点: 一整个过程(流水线)只能解决一个问题,若问题更改,代码几乎要全部重写. ...
- python中string什么意思_python字符串(string)方法整理
C C语言开发 python字符串(string)方法整理 python中字符串对象提供了很多方法来操作字符串,功能相当丰富. print(dir(str)) [..........'capitali ...
- python常用函数的用法_python中常用函数整理
1.map map是python内置的高阶函数,它接收一个函数和一个列表,函数依次作用在列表的每个元素上,返回一个可迭代map对象. class map(object):""&qu ...
- python自动化办公是什么_Python自动化办公知识点整理汇总
知乎上有人提问:用python进行办公自动化都需要学习什么知识呢? 这可能是很多非IT职场人士面临的困惑,想把python用到工作中,却不知如何下手?python在自动化办公领域越来越受欢迎,批量处理 ...
最新文章
- 用友登录控件Vbs脚本
- VS2005新建应用工程出错解决方法
- 【黑科技】在alv中设置字体样式
- rust编程之道 pdf_LPC: 想在内核里引入Rust,还需要做很多决定
- Perl学习笔记(2)
- PyTorch随笔-0
- SSH(Secure Shell Protocol)命令之 grep
- 《地下城与勇士歼灭贝内尔》回合格斗
- scala python_Scala与Python | 哪种编程语言更好
- 使用Tomcat Catalina进行Tomcat服务器虚拟目录设置
- 【转】PHP对象在内存中的分配
- 解决 react-router 中 history is 'undefined' 的问题
- php编写文章发布程序教程,PHP开发文章发布系统之后台文章修改处理程序
- 括号匹配算法Java实现
- alisql mysql_AliSQL 5.6.32 vs MySQL 5.7.15抢鲜测试
- 关于《windows游戏编程大师技巧》的源代码
- python win32api messagebox_如何在Python中使用Win32 API?
- 简单的c语言游戏编程打地鼠,少儿创意编程scratch初级游戏--打地鼠
- 只有10分,5分,2分,1分的硬币;顾客付款x分,商品价格y分。如何找零所使用的硬币最少(递归实现)
- 关于四川华图省考面试 1:1职位保护的承诺函
热门文章
- 对游戏编程开发的一点思考
- discuz手机端默forum.php,discuz手机wap版模板开发方式简述
- 日更第1天:Linux常用命令之dnf用法
- 风花雪月·《基层风云·1》·四
- 无法打开excel powermap 三维地图
- linux用mame玩游戏,Ubuntu下用xmame玩街机游戏
- 怎么建立局域网_智能电视局域网共享怎么操作?多数品牌都适用的方法!
- *sql注入实战--记一次绕过WTS-WAF拦截注入**
- 龙芯CPU频率为什么上不去?
- 【信息安全】-身份认证技术