字符串编码常用类型:utf-8,gb2312,cp936,gbk等。

Python中,我们使用decode()和encode()来进行解码和编码

在python中,使用unicode类型作为编码的基础类型。即

decode              encode

str ---------> unicode --------->str

u = u'中文' #显示指定unicode类型对象u

str = u.encode('gb2312') #以gb2312编码对unicode对像进行编码

str1 = u.encode('gbk') #以gbk编码对unicode对像进行编码

str2 = u.encode('utf-8') #以utf-8编码对unicode对像进行编码

u1 = str.decode('gb2312')#以gb2312编码对字符串str进行解码,以获取unicode

u2 = str.decode('utf-8')#如果以utf-8的编码对str进行解码得到的结果,将无法还原原来的unicode类型

如上面代码,str\str1\str2均为字符串类型(str),给字符串操作带来较大的复杂性。

好消息来了,对,那就是python3,在新版本的python3中,取消了unicode类型,代替它的是使用unicode字符的字符串类型(str),字符串类型(str)成为基础类型如下所示,而编码后的变为了字节类型(bytes)但是两个函数的使用方法不变:

decode              encode

bytes ------> str(unicode)------>bytes

u = '中文' #指定字符串类型对象u

str = u.encode('gb2312') #以gb2312编码对u进行编码,获得bytes类型对象str

u1 = str.decode('gb2312')#以gb2312编码对字符串str进行解码,获得字符串类型对象u1

u2 = str.decode('utf-8')#如果以utf-8的编码对str进行解码得到的结果,将无法还原原来的字符串内容

避免不了的是,文件读取问题:

假如我们读取一个文件,文件保存时,使用的编码格式,决定了我们从文件读取的内容的编码格式,例如,我们从记事本新建一个文本文件test.txt, 编辑内容,保存的时候注意,编码格式是可以选择的,例如我们可以选择gb2312,那么使用python读取文件内容,方式如下:

f = open('test.txt','r')

s = f.read() #读取文件内容,如果是不识别的encoding格式(识别的encoding类型跟使用的系统有关),这里将读取失败

'''假设文件保存时以gb2312编码保存'''

u = s.decode('gb2312') #以文件保存格式对内容进行解码,获得unicode字符串

'''下面我们就可以对内容进行各种编码的转换了'''

str = u.encode('utf-8')#转换为utf-8编码的字符串str

str1 = u.encode('gbk')#转换为gbk编码的字符串str1

str1 = u.encode('utf-16')#转换为utf-16编码的字符串str1

python给我们提供了一个包codecs进行文件的读取,这个包中的open()函数可以指定编码的类型:

import codecs

f = codecs.open('text.text','r+',encoding='utf-8')#必须事先知道文件的编码格式,这里文件编码是使用的utf-8

content = f.read()#如果open时使用的encoding和文件本身的encoding不一致的话,那么这里将将会产生错误

f.write('你想要写入的信息')

f.close()

知识点

python中decode函数在哪个库_python encode和decode函数说明相关推荐

  1. python中读写excel的扩展库_Python读写Excel文件第三方库汇总,你想要的都在这儿!...

    常见库简介 xlrd xlrd是一个从Excel文件读取数据和格式化信息的库,支持.xls以及.xlsx文件. http://xlrd.readthedocs.io/en/latest/ 1.xlrd ...

  2. jieba是python中一个重要的标准函数库_python——Jieba库整理(基础知识+实例)

    先上目录,1.Jieba库是什么 2.Jieba库的使用(常见方法及函数) 3.实例--英文文本解析和中文文本解析 1.Jieba库是什么 Jieba库是优秀的中文分词第三方库,中文文本需要通过分词获 ...

  3. 如何在python中一次性输入多个参数_python如何利用input函数输入多个参数?

    如果考虑这样的应用: 程序需要多个参数,并且希望每输入一个参数就进行换行,即希望一次输入多个参数. 关于这样问题网络上有一些帖子,但是总是没有讲到要点,这里解析如下. 关键知识点: 1.input函数 ...

  4. python中input同时输入多个_python如何利用input函数输入多个参数?

    如果考虑这样的应用: 程序需要多个参数,并且希望每输入一个参数就进行换行,即希望一次输入多个参数. 关于这样问题网络上有一些帖子,但是总是没有讲到要点,这里解析如下. 关键知识点: 1.input函数 ...

  5. 小结两种在Python中导入C语言扩展库的方法

    小结两种在Python中导入C语言扩展库的方法 分类: Pythoner2009-08-18 20:44 2563人阅读 评论(1) 收藏 举报 python扩展c语言importstring 一种是 ...

  6. 捋一捋Python中的数学运算math库(上篇)

    正式的Python专栏第18篇,同学站住,别错过这个从0开始的文章! 很多学习编程的都多多少少学习了一些数学知识. 学委之前也简单吐槽了 Python中奇葩的round函数! 这篇我们讲讲那些常用的数 ...

  7. python中类方法与实例方法的区别-Python中的对象,方法,类,实例,函数用法分析...

    本文实例分析了Python中的对象,方法,类,实例,函数用法.分享给大家供大家参考.具体分析如下: Python是一个完全面向对象的语言.不仅实例是对象,类,函数,方法也都是对象. class Foo ...

  8. Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13

    Python中出现 SyntaxError: (unicode error) 'unicodeescape' codec can't decode bytes in position 12-13: t ...

  9. Python中TKinter的输入框如何绑定回车键事件调用功能函数

    Python中TKinter的输入框如何绑定回车键事件调用功能函数 TKinter中的Entry输入框,与普通的按钮类型有所不同,没有command的属性来直接调用一个函数功能,所以,如果要通过键盘按 ...

最新文章

  1. 干货讲解 | OKT507-C开发板基于Linux系统的应用笔记
  2. 第四次产业革命将由四个领域引领:大数据、新材料、新能源和生物科技。
  3. CSS绘制放大缩小关闭按钮
  4. jax-rs jax-ws_通过JAX-WS Provider在Web服务中利用MOXy
  5. sql 中 ALTER 和 UPDATE 的区别
  6. Android-opencv之CVCamera (转载)
  7. CSS2.0样式手册_说明_SDK下载chm
  8. miui tv android,MIUI for TV 3.0上线 应用远程安装 手机反控电视
  9. Qt结合FFmpeg解码本地视频生成.h264文件和.yuv文件
  10. matlab做信号完整性,关于Matlab的Turbo码仿真研究
  11. idea中的万能快捷键(alt + enter)
  12. 离开学校后如何下载知网论文或外文论文
  13. 故障树分析法MATLAB,故障树分析(FTA)方法及其基于VC的软件设计的研究
  14. c语言unit id是什么,小程序再升级之什么是UnitionID
  15. 腾讯撕开中国NFT的“遮羞布”
  16. CentOS 7 安装rar解压rar
  17. 运维工程师主要做什么_弱电工程IT运维工作到底是做什么的?
  18. 如何深入和高效的学习编程语言
  19. 12.22 @烤仔建工 | 烤仔家具城建设中……
  20. 解压chm后由hhc生成html索引页面

热门文章

  1. 架构实战:(一)Redis采用主从架构的原因
  2. 使用jquery时一些小技巧的总结
  3. itext jsp页面打印
  4. svn在linux下的使用(svn命令行)ubuntu 删除 新增 添加 提交 状态查询 恢复
  5. C# 线程手册 第三章 使用线程 Monitor.TryEnter()
  6. [Leetcode][第309题][JAVA][最佳买卖股票时机含冷冻期][动态规划][压缩空间]
  7. micropython stm32f407 以太网_[MicroPython]STM32F407开发板DIY声光控开关
  8. 街上第一台电子计算机是,南京信息工程大学滨江学院2009级《计算机基础》(文科)a试卷(含答案)【最新】.doc...
  9. 小红书笔记_小红书的沙雕笔记,害人不浅啊
  10. python 对象_Python中的Barrier对象