今天开发帮忙写了一个读取windows文件签名的小程序,并把签名信息写到txt文件中,用UE打开发现居然是UCS-2 LE编码,几经查找,如下是读取的文本。
>>> a
'\xff\xfe.\x00/\x00\\\x002\x000\x001\x006\x000\x009\x002\x003\x00\\\x00C\x00W\x0
0C\x00C\x00S\x00e\x00t\x00u\x00p\x00.\x00e\x00x\x00e\x00-\x00-\x00-\x00S\x00i\x0
0g\x00n\x00a\x00t\x00u\x00r\x00e\x00N\x00a\x00m\x00e\x00:\x00\r\x00\n'
>>> chardet.detect(a)
{'confidence': 1.0, 'encoding': 'UTF-16LE'}
用python解析:
# -*- coding: cp936 -*- import os import codecs def parseFile(filepath): try: lineList = [] # 存放每一行的内容 with open(filepath, 'r') as fp: line = fp.read() if line.startswith('\xff\xfe'): encoding = 'utf-16-le' fp2 = codecs.open(filepath, 'r', encoding) lineList = fp2.readlines() fp2.stream.close() for i in lineList: # 打印每一行 print i, except Exception,ex: print '[ERROR]--',ex if __name__ == '__main__': filepath = './Signature.txt' parseFile(filepath)