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的一种实现形式。**

编码、转码和编码格式相关推荐

  1. 计算机字符编码——ASCII码和常用编码

    计算机字符编码--ASCII码和常用编码 ASCII码 基本介绍 上个世纪60年代, 美国制定了一套字符编码, 对英语字符与二进制位之间的关系, 做了统一规定,这被称为ASCII码. ASCII码一共 ...

  2. java 文件编码转码工具类

    java 文件编码转码工具类 一.描述        文件编码转码,GBK编码的文件转为UTF-8编码的文件. 二.代码实现 package com.lanshen.utils.lsjavaUtils ...

  3. 【数电】(一) 进制转换编码 原码,反码,补码

    文章目录 前提知识 计算机发展史 集成电路(Integrated Circuit) 数字集成电路 0 1思维 1Bit 机器码 加法器 二进制与十进制之间的转换 BCD编码 原码,反码,补码 原码 反 ...

  4. C语言实现Base64编码转码

    C语言实现Base64编码转码 关于Base64的介绍有两篇文章已经做得非常好了:一篇是维基百科Base64的词条,如果被Q可以看本文

  5. 基于 FFMPEG 的视频编码 源码(libavcodec,C++ Qt)

    基于 FFMPEG 的视频编码 源码(libavcodec,C++ Qt) 昨晚把源代码好好整理了一下,加入了视频时间限制功能.源码放这里,大家随便用. 关于代码的解释可以看我另一篇博客: 基于 FF ...

  6. 字符,字节和编码, ASCII码, DBCS码,SBCS码 与Unicode码

    字符,字节和编码, ASCII码, DBCS码,SBCS码 与Unicode码 http://www.regexlab.com/zh/encoding.htm 1. 编码问题的由来,相关概念的理解 1 ...

  7. macOS上有哪些视频无损压缩和编码转码软件

    macOS 上常用的视频无损压缩和编码转码软件有 Handbrake.FFmpeg 和 MEGui.

  8. 查看网页源码的编码格式

    需求:解析网页数据时偶尔会出现乱码,这是由于编码格式不对导致的,这时我们就需要知道网页源码的编码方式 解决办法: 以http://stock.jrj.com.cn/2018/12/0400002544 ...

  9. java 转码%2f%_JS和JAVA中常用的编码转码函数

    js中escape,encodeURI,encodeURIComponent函数和unescape,decodeURI和decodeURIComponent函数的功能 1.escape方法对Strin ...

最新文章

  1. Idoc学习笔记----获取查询Idoc信息
  2. java中删除每一条数据,一条sql语句删除表中所有除ID 不同之外的记录,只留一条。...
  3. C++ 11 深度学习(一)auto、头文件防卫、引用、常量
  4. What?什么是区块链?你不知道就太low了
  5. python集合和序列解包
  6. Android 手机进入不了fastboot模式的解决方案
  7. 【一、视频处理】FPGA驱动OV7725摄像头模块
  8. 人工智能的历史(History of artificial intelligence)
  9. Scrapy框架之传智项目整理
  10. Python人脸识别 Python3.7+OpenCV+Dlib+罗技C920摄像头 实现离线实时摄像头画面人脸检测+识别
  11. 服务器每天自动变密码,Windows自动修改系统密码分享
  12. 这年头,当帅哥不容易呀!!
  13. 迅雷的地址解析--把自己的下载地址变成迅雷链接
  14. 转---电脑的MAC实际地址可以修改吗?
  15. EXCEL 正则表达式
  16. 领跑AIoT场景落地 OFweek智慧家庭高峰论坛圆满落幕!
  17. 关于IOS的学习(wxhl)曾海明
  18. mysql批量删除5000条数据_mysql批量删除大量数据
  19. 【python】re解析和re模块
  20. 9343拆机 xps13_戴尔(DELL)XPS 13 XPS13D-9343-1808T超极本拆解图评测-ZOL中关村在线

热门文章

  1. HttpsCA证书的申请和安装
  2. org.aspectj.weaver.reflect.ReflectionWorld$ReflectionWorldException
  3. 怎么样查杀主页劫持木马,劫持浏览器首页的驱动木马解决方法
  4. 赵艺海个人项目(任务1):猜数字游戏
  5. 如何防止人工智能毁灭人类
  6. 死磕前端架构之整洁架构在前端的应用实践【稀缺资源】
  7. 17Web服务器端控件
  8. 0x00007FF727D8013F 处有未经处理的异常(在 bigship.exe 中): 0xC0000005: 读取位
  9. 天振股份上市首日破发:市值蒸发约8亿元,方庆华夫妇为实控人
  10. swift QQ界面练习