文章目录

  • 概述
  • 谈谈我在何处用到这个模块

概述

codecs:这个模块定义了标准 Python 编解码器(编码器和解码器)的基类,并提供接口用来访问内部的 Python 编解码器注册表,该注册表负责管理编解码器和错误处理的查找过程。 大多数标准编解码器都属于 文本编码,它们可将文本编码为字节串,但也提供了一些编解码器可将文本编码为文本,以及字节串编码为字节串。 自定义编解码器可以在任意类型间进行编码和解码,但某些模块特性仅适用于 文本编码或将数据编码为 字节串 的编解码器。

Python3.5 使用 protobuf3.0.0.beta2

该模块定义了以下用于使用任何编解码器进行编码和解码的函数:

# 使用为 encoding 注册的编解码器对 obj 进行编码  可以给定 Errors 以设置所需要的错误处理方案。
codecs.encode(obj, encoding='utf-8', errors='strict')# 使用为 encoding 注册的编解码器对 obj 进行解码  可以给定 Errors 以设置所需要的错误处理方案。
codecs.decode(obj, encoding='utf-8', errors='strict')# 每种编解码器的完整细节也可以直接查找获取 在 Python 编解码器注册表中查找编解码器信息,并返回一个 CodecInfo 对象,
codecs.lookup(encoding)# 查找编解码器注册表所得到的编解码器细节信息
class CodecInfo(tuple):_is_text_encoding = True # Assume codecs are text encodings by defaultdef __new__(cls, encode, decode, streamreader=None, streamwriter=None,incrementalencoder=None, incrementaldecoder=None, name=None,*, _is_text_encoding=None):self = tuple.__new__(cls, (encode, decode, streamreader, streamwriter))self.name = nameself.encode = encodeself.decode = decodeself.incrementalencoder = incrementalencoderself.incrementaldecoder = incrementaldecoderself.streamwriter = streamwriterself.streamreader = streamreaderif _is_text_encoding is not None:self._is_text_encoding = _is_text_encodingreturn selfdef __repr__(self):return "<%s.%s object for encoding %s at %#x>" % \(self.__class__.__module__, self.__class__.__qualname__,self.name, id(self))# 为了简化对各种编解码器组件的访问,本模块提供了以下附加函数,它们使用 lookup() 来执行编解码器查找:# 查找给定编码的编解码器并返回其编码器函数。
codecs.getencoder(encoding)# 查找给定编码的编解码器并返回其解码器函数。
codecs.getdecoder(encoding)# 查找给定编码的编解码器并返回其增量式编码器类或工厂函数。
codecs.getincrementalencoder(encoding)# 查找给定编码的编解码器并返回其增量式解码器类或工厂函数。
codecs.getincrementaldecoder(encoding)# 查找给定编码的编解码器并返回其 StreamReader 类或工厂函数。
codecs.getreader(encoding)# 查找给定编码的编解码器并返回其 StreamWriter 类或工厂函数。
codecs.getwriter(encoding)# 自定义编解码器的启用是通过注册适当的编解码器搜索函数:
# 注册一个编解码器搜索函数。 搜索函数预期接收一个参数,即全部以小写字母表示的编码名称,并返回一个 CodecInfo 对象。 在搜索函数无法找到给定编码的情况下,它应当返回 None
codecs.register(search_function)# 常量
codecs.BOM
codecs.BOM_BE
codecs.BOM_LE
codecs.BOM_UTF8
codecs.BOM_UTF16
codecs.BOM_UTF16_BE
codecs.BOM_UTF16_LE¶
codecs.BOM_UTF32
codecs.BOM_UTF32_BE
codecs.BOM_UTF32_LE

以上是源码部分的简单介绍,详细的内容博主建议可以去python官方源码文档中阅读,详情点击

谈谈我在何处用到这个模块

前几天在做一个文件导出的需求开发,在开发完成之后,多次测试发现导出的内容均为乱码,后来发现是编码设置的问题,后来使用了这个模块解决了
部分代码

response = HttpResponse(content_type='text/csv')
field_list = exportable_fields
response['Content-Disposition'] = 'attachment;filename=%s.csv' % (datetime.now().strftime('%Y-%m-%d-%H-%M-%S'))
response.write(codecs.BOM_UTF8)

python模块—codecs相关推荐

  1. python :codecs模块简介

    python :codecs模块简介 python对多国语言的处理是支持的很好的,它可以处理现在任意编码的字符,这里深入的研究一下python对多种不同语言的处理. 有一点需要清楚的是,当python ...

  2. 详解Python的codecs模块

    浅析Python的codecs模块 编码转化 codecs.open() 总结 Reference 编码转化 codecs专门用作编码转换. # -*- encoding: gb2312 -*- im ...

  3. Python的codecs模块

    参考Python的codecs模块 - 云+社区 - 腾讯云 codecs专门用作编码转换. # -*- encoding: gb2312 -*- import codecs, sysprint ' ...

  4. python中codecs模块_python codecs模块解决UnicodeEncodeError

    通过python在html文件中截取table标签内容时,出现了UnicodeEncodeError: 'gbk' codec can't encode character u'\xc7' in po ...

  5. python模块使用_PYthon模块使用教程(最新).doc

    您所在位置:网站首页 > 海量文档 &nbsp>&nbsp计算机&nbsp>&nbspPython PYthon模块使用教程(最新).doc63页 本 ...

  6. python 模块与包_Python 模块与包

    模块:一个模块就是一个包含了python定义和声明的文件,文件名就是模块名字加上.py的后缀. 但其实import加载的模块分为四个通用类别: 1.使用python编写的代码(.py文件) 2.已被编 ...

  7. python用什么来写模块-史上最详细的python模块讲解

    模块的概念你一定不会陌生吧,这是一个非常宽泛的概念,在各行各业都会用到.这里我们涉及的只是软件中的模块概念.说到模块,就得先了解下模块化程序设计的概念.(如果您对模块化程序设计的概念已经烂熟于心,尽可 ...

  8. [Python]如何快速知道要使用哪些python模块和有哪些功能

    1,查看python自带的lib, 例如:http://docs.python.org/3.1/library/ 2,如果想看自己的python项目都导入了那些模块,可以用sys.modules输出来 ...

  9. python 模块 导入机制 模块搜索 Python包 发布python模块或程序

    python 模块 python模块:以.py结尾的代码文件.        顶层文件: 程序执行入口        模块文件1        模块文件2        模块文件3 在python中一 ...

最新文章

  1. MIT长篇论文:我们热捧的AI翻译和自动驾驶,需要用技术性价比来重估
  2. Java之构造器和构造方法的使用和意义
  3. Android 学习笔记四:创建工具栏按钮
  4. vuex 实现vue中多个组件之间数据同步以及数据共享。
  5. C++ string 使用详解(含C++20新特性)
  6. 学弟学妹们,C#为啥学不好?是因为你没真正理解面向对象的思想!
  7. tomcat-maven插件热部署(简洁版)
  8. 马踏棋盘算法(骑士周游问题)
  9. linux-权限管理acl高级
  10. [原创]网站HTML,XHTML,XML,WML,CSS等测试验证工具介绍
  11. Java开发遇到的问题及解决方案
  12. html空间登录页面制作,免费HTML网页空间(每月200 GB 流量托管静态网页超简单)...
  13. Halcon批量读取图片 读取指定文件夹下图片
  14. 月报总结|Moonbeam 11月份大事一览
  15. 地址总线是单向还是双向_双向可控硅和单向可控硅的区别
  16. python导入文件方法大全
  17. c语言输出我爱你程序,程序员表白教程,这些代码用过的都成功了!
  18. 利用SwipeRefreshLayout实现类似知乎客户端的一打开界面就自动刷新的效果
  19. 苹果/Mac电脑软件卸载不了怎么办?
  20. 校园跑腿微信小程序跑腿同学带直播新版源码

热门文章

  1. 深信服调试vpn步骤
  2. C#:十六进制字节数组 转换成 字符串、字符串形式的16进制数据 转换成 十六进制字节数组
  3. 【Kubernetes】k8s的安全管理详细说明【role赋权和clusterrole赋权详细配置说明】
  4. java entryset用法_entrySet如何用的。
  5. vmware 添加共享盘
  6. 软件定制开发和模板开发有什么区别?该如何选择
  7. linux 内核 ipv6 路由,Linux模拟IPV6双栈路由器实现方案
  8. css3制作3D立体模型
  9. html5 jsplumb,jsPlumb开发入门教程(实现html5拖拽连线)
  10. OpenGL设计房间 (虚拟现实大作业)