codecs --- 编解码器注册和相关基类
这个模块定义了标准Python编解码器(编码器和解码器)的基类,并提供接口用来访问内部的Python编解码器注册表,该注册表负责管理编解码器和错误处理的查找过程。大多数标准编解码器都属于文本编码,它们可将文本编码为字节串,但也提供了一些编解码器可将文本编码为文本,以及字节串编码为字节串。自定义编解码器可以在任意类型间进行编码和解码,但某些模块特性仅适用于文本编码或将数据编码为字节串的编解码器。
本模块提供了以下常量,适用于读取和写入依赖于平台的文件:
codecs.BOM_UTF8
这些常量定义了多种字节序列,即一些编码格式的Unicode字节顺序标记(BOM)。它们在UTF-16和UTF-32数据流种被用以指明所使用的字节顺序,并在UTF-8种被用作Unicode签名。BOM_UTF16是BOM_UTF16_BE或BOM_UTF16_LE,具体取决于平台的本机字节顺序,BOM是BOM_UTF16的别名,BOM_LE是BOM_UTF16_LE的别名,BOM_BE是BOM_UTF16_BE的别名。其他序列则表示UTF_8和UTF-32编码格式中的BOM。
应用举例:
编译过程中报错 65279
这是因为代码中采用utf-8有bom的编码格式。bom其实就是在文件的开头,插入了3bit的bom头。‘xefxbbxbf’
import os import codecs import configparser proDir =os.path.split(os.path.realpath(__file__))[0] configPath = os.path.join(porDir, "config.ini") class ReadConfig: def __init__(self): fd = open(configPath) data = fd.read() # remove BOM if data[:3] == codecs.BOM_UTF8: data = data[3:] file = codes.open(configPaht,"w") file.write(data) file.close() fd.close()