美文网首页
codecs模块-完成字符编码

codecs模块-完成字符编码

作者: 致Great | 来源:发表于2018-05-30 00:20 被阅读38次

字符的编码是按照某种规则在单字节字符和多字节字符之间进行转换的某种方法。从单字节到多字节叫做decoding,从多字节到单字节叫做encoding。在这些规则中经常用到的无非是UTF-8和GB2312两种。

在Python中,codecs模块提供了实现这些规则的方法,通过模块公开的方法我们能够方便地获取某种编码方式的Encoder和 Decoder工厂函数(Factory function),以及StreamReader、StreamWriter和StreamReaderWriter类。
lookup函数返回一个包含四个元素的TUPLE,其中t[0]是encoder的函数引用,t[1]是decoder的函数引用,t[2] 是UTF-8编码方式的StreamReader类对象引用,t[3]是UTF-8编码方式的StreamWriter类对象引用相信对Python熟悉的你肯定知道接下来该怎么用它们了。

codecs模块还提供了方便程序员使用的单独函数,以简化对lookup的调用。它们是:

  • getencoder(encoding)
  • getdecoder(encoding)
  • getreader(encoding)
  • getwriter(encoding)
    如果我们只是想获取一种utf-8编码的encoder方法,那么只需要这样做:

另外,对于StreamReader和StreamWriter的简化, codecs模块提供一个open方法。相对于built-in对象File的open方法,前者多了三个参数encoding, errors, buffering。这三个参数都是可选参数,但是对于应用来说,需要明确指定encoding的值,而errors和buffering使用默认值即可。

codecs模块中重要的函数之一是lookup,它只有一个参数encoding,指的是编码方式的名称,即utf-8或者gb2312等等。如下示例:

import codecs
t = codecs.lookup('utf-8')
print(t)
encoder = t[0]
decoder = t[1]
StreamReader = t[2]
StreamWriter = t[3]
print(encoder, decoder, StreamReader, StreamWriter)
with codecs.open('demo.txt', 'r', encoding='utf-8') as f:
    print(f.read())

输出:

<codecs.CodecInfo object for encoding utf-8 at 0x1da55dcc3a8>
<built-in function utf_8_encode> <function decode at 0x000001DA55DDAF28> <class 'encodings.utf_8.StreamReader'> <class 'encodings.utf_8.StreamWriter'>
测试下codecs
[Finished in 0.2s]

https://blog.csdn.net/hmsiwtv/article/details/20400455

相关文章

  • codecs模块-完成字符编码

    字符的编码是按照某种规则在单字节字符和多字节字符之间进行转换的某种方法。从单字节到多字节叫做decoding,从多...

  • codecs 编码处理

    codecs 是处理编码的模块,对多国语言的处理有良好的支持,小例子,

  • Python第二章公交系统数据读取与处理

    codecs解决文件编码不统一时的读写问题示例(u字符使编码转换为unicode方式): 解决方式 摘自leidi...

  • IO编程

    读文件 字符编码 要读取非ASCII编码的文件,要以二进制模式打开,再解码。 Python还提供了一个codecs...

  • python 经验记录

    codecs, decode,encode 我的理解是: python 内部用unicode字符保存 codecs...

  • Python 3 查看字符编码方法

    查看字符编码,需要用到chardet模块 一、查看网页编码 二、查看文件内容编码 三、查看某个字符串编码 Tips...

  • python编码地址

    编码地址 https://docs.python.org/3/library/codecs.html#standa...

  • 4,ffmpeg 改变编码(上)编码,音频转码

    编码的目的是为了缩小文件的体积便于存储。输入 ffmpeg -codecs可以看到 ffmpeg支持几百种编码 ...

  • python查看sql文件的编码格式

    代码如下; import chardet ''' chardet模块 使用该模块可以查看字符串的编码格式:char...

  • python加密

    字符串与bytes binascii binascii模块以更合适的方式展示16进制的字节 URL编码 URL编码...

网友评论

      本文标题:codecs模块-完成字符编码

      本文链接:https://www.haomeiwen.com/subject/xxbzjftx.html