python读取 UCS2 little endian(utf16le) 格式的文件

今天开发帮忙写了一个读取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)

  

原文地址:https://www.cnblogs.com/jj1118/p/5900117.html