python处理UTF-8文件的BOM头

问题

用requests库下载一个xml文件,结果 return response.content 的时候发现返回的文本是这样的

b'\xef\xbb\xbf<?xxxxxxxxxx

前面有b’\xef\xbb\xbf
写入文件的时候就有问题了
查了一下EF BB BF是被称为 Byte order mark (BOM)的文件标记,用来指出这个文件是UTF-8编码
在Stack Overflow上面搜到一个类似的问题
https://stackoverflow.com/questions/13590749/reading-unicode-file-data-with-bom-chars-in-python

解决方案

>>> b'\xef\xbb\xbfhello'.decode('utf-8-sig')
'hello'