BOM(Byte Order Mark)是Unicode规范中推荐的标记字节顺序的方法。比如UTF-16,如果接受者收到的BOM是FEFF,表明这个字节流是Big-Endian;如果收到FFFE,表明这个字节流是Little-Endian。
UTF-8不需要BOM来表明字节顺序,但可以用BOM来表明“UTF-8编码”的身份。BOM的UFT-8编码是EF BB BF,所以接受者收到以EF BB BF开头的字节流,就知道这是UTF-8编码。

1
2
3
4
5
6
7
f=open('new.txt','r',encoding='utf-8')
data=f.read()
print(data.split(','))
print(data.encode('utf-8').decode('utf-8-sig'))
# 输出
['\ufeff武汉', '杭州', '北京']
武汉,杭州,北京