编码、转码和编码格式
1.字符串的编码:python3中字符串类型str就是以Unicode编码格式编码。编码是一种用一种特定的方式对抽象字符(Unicode)转换为二进制形式(bytes)进行表示,也就是python3中的encode。解码就是对用特定方式表示的二进制数据用特定的方式转化为Unicode,也就是decode。如果你对str类型字符进行decode会报错,同理,对bytes类型进行encode也会报错。编码和解码必须要使用同一种编码格式进行处理否则就会报错!
s='你好'
print(s)#输出结果:你好
print(type(s))#输出结果:<class 'str'>
s=s.encode('UTF-8')
print(s)#输出结果:b'\xe4\xbd\xa0\xe5\xa5\xbd'
print(type(s))#输出结果:<class 'bytes'>
s=s.decode('UTF-8')
print(s)#输出结果:你好
print(type(s))#输出结果:<class 'str'>
2.文件的编码:如果以‘w’模式写入,则要求写入的内容必须是str类型;如果以‘wb’形式写入,则要求写入的内容必须是bytes类型。有的人会问,我在系统里面用文本编辑器打开以bytes形式写入的2.txt文件,发现里面显示的是‘你好’,而不是‘b'\xe4\xbd\xa0\xe5\xa5\xbd'’,因为文本文档打开2.txt时,又会对它进行decode,然后才给你看到。
s1 = '你好'#如果是以‘w’的方式写入,写入前一定要进行encoding,否则会报错
with open('F:\\1.txt','w',encoding='utf-8') as f1:f1.write(s1)
s2 = s1.encode("utf-8")#转换为bytes的形式
#这时候写入方式一定要是‘wb’,且一定不能加encoding参数
with open('F:\\2.txt','wb') as f2:f2.write(s2)
3.网页的编码:网页编码和文件编码方法差不多,如下urlopen下载下来的网页read()且用decoding(‘utf-8’)解码,那就必须以‘w’的方式写入文件。如果只是read()而不用encoding(‘utf-8’)进行编码,一定要以‘wb’方式写入。
以‘w’方式写入时:
response= urlopen('http://blog.csdn.net/gs_zhaoyang/article/details/13768925 ')
#此处以UTF-8方式进行解码,解码后的数据以unicode的方式存储在html中
html = response.read().decode('UTF-8')
print(type(html))#输出结果:<class 'str'>
#这时写入方式一定要加encoding,以encoding
# 即UTF-8的方式对二进制数据进行编码才能写入
with open('F:\DownloadAppData\html.txt',"w" , encoding='UTF-8') as f:f.write(html)
以‘wb’方式写入:
response= urlopen('http://blog.csdn.net/gs_zhaoyang/article/details/13768925')
html = response.read()#此处不需要进行解码,下载下来
print(type(html))#输出结果:<class 'bytes'>
with open('F:\DownloadAppData\html.txt',"wb" ) as f:f.write(html)
编码格式:
1.为了处理英文字符,产生了ASCII码。
2.为了处理中文字符,产生了GB2312。
3.为了处理各国字符,产生了Unicode。
4.为了提高Unicode存储和传输性能,产生了UTF-8,它是Unicode的一种实现形式。**
编码、转码和编码格式相关推荐
- 计算机字符编码——ASCII码和常用编码
计算机字符编码--ASCII码和常用编码 ASCII码 基本介绍 上个世纪60年代, 美国制定了一套字符编码, 对英语字符与二进制位之间的关系, 做了统一规定,这被称为ASCII码. ASCII码一共 ...
- java 文件编码转码工具类
java 文件编码转码工具类 一.描述 文件编码转码,GBK编码的文件转为UTF-8编码的文件. 二.代码实现 package com.lanshen.utils.lsjavaUtils ...
- 【数电】(一) 进制转换编码 原码,反码,补码
文章目录 前提知识 计算机发展史 集成电路(Integrated Circuit) 数字集成电路 0 1思维 1Bit 机器码 加法器 二进制与十进制之间的转换 BCD编码 原码,反码,补码 原码 反 ...
- C语言实现Base64编码转码
C语言实现Base64编码转码 关于Base64的介绍有两篇文章已经做得非常好了:一篇是维基百科Base64的词条,如果被Q可以看本文
- 基于 FFMPEG 的视频编码 源码(libavcodec,C++ Qt)
基于 FFMPEG 的视频编码 源码(libavcodec,C++ Qt) 昨晚把源代码好好整理了一下,加入了视频时间限制功能.源码放这里,大家随便用. 关于代码的解释可以看我另一篇博客: 基于 FF ...
- 字符,字节和编码, ASCII码, DBCS码,SBCS码 与Unicode码
字符,字节和编码, ASCII码, DBCS码,SBCS码 与Unicode码 http://www.regexlab.com/zh/encoding.htm 1. 编码问题的由来,相关概念的理解 1 ...
- macOS上有哪些视频无损压缩和编码转码软件
macOS 上常用的视频无损压缩和编码转码软件有 Handbrake.FFmpeg 和 MEGui.
- 查看网页源码的编码格式
需求:解析网页数据时偶尔会出现乱码,这是由于编码格式不对导致的,这时我们就需要知道网页源码的编码方式 解决办法: 以http://stock.jrj.com.cn/2018/12/0400002544 ...
- java 转码%2f%_JS和JAVA中常用的编码转码函数
js中escape,encodeURI,encodeURIComponent函数和unescape,decodeURI和decodeURIComponent函数的功能 1.escape方法对Strin ...
最新文章
- Idoc学习笔记----获取查询Idoc信息
- java中删除每一条数据,一条sql语句删除表中所有除ID 不同之外的记录,只留一条。...
- C++ 11 深度学习(一)auto、头文件防卫、引用、常量
- What?什么是区块链?你不知道就太low了
- python集合和序列解包
- Android 手机进入不了fastboot模式的解决方案
- 【一、视频处理】FPGA驱动OV7725摄像头模块
- 人工智能的历史(History of artificial intelligence)
- Scrapy框架之传智项目整理
- Python人脸识别 Python3.7+OpenCV+Dlib+罗技C920摄像头 实现离线实时摄像头画面人脸检测+识别
- 服务器每天自动变密码,Windows自动修改系统密码分享
- 这年头,当帅哥不容易呀!!
- 迅雷的地址解析--把自己的下载地址变成迅雷链接
- 转---电脑的MAC实际地址可以修改吗?
- EXCEL 正则表达式
- 领跑AIoT场景落地 OFweek智慧家庭高峰论坛圆满落幕!
- 关于IOS的学习(wxhl)曾海明
- mysql批量删除5000条数据_mysql批量删除大量数据
- 【python】re解析和re模块
- 9343拆机 xps13_戴尔(DELL)XPS 13 XPS13D-9343-1808T超极本拆解图评测-ZOL中关村在线
热门文章
- HttpsCA证书的申请和安装
- org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
- 怎么样查杀主页劫持木马,劫持浏览器首页的驱动木马解决方法
- 赵艺海个人项目(任务1):猜数字游戏
- 如何防止人工智能毁灭人类
- 死磕前端架构之整洁架构在前端的应用实践【稀缺资源】
- 17Web服务器端控件
- 0x00007FF727D8013F 处有未经处理的异常(在 bigship.exe 中): 0xC0000005: 读取位
- 天振股份上市首日破发:市值蒸发约8亿元,方庆华夫妇为实控人
- swift QQ界面练习