<feff> 问题

之前多次遇到在文件头中看到<feff>的情况,都会导致数据有问题。开始只是删除它没太注意是怎么回事,这次又遇到了这个问题,查了一下,总结了一下问题。分享一下。

 UTF-8编码中BOM的检测与删除

先解释一个名词BOM,所谓BOM,全称是Byte Order Mark,它是一个Unicode字符,通常出现在文本的开头,用来标识字节序 (Big/LittleEndian),除此以外还可以标识编码(UTF-8/16/32),如果出现在文本中间,则解释为zero width no-breakspace

注:Unicode相关知识的详细介绍请参考UTF-8, UTF-16, UTF-32 & BOM

对于UTF-8/16/32而言,它们名字中的8/16/32指的是编码单位是多少位的,也就是说,它们的编码单位分别是8/16/32位,换算成字节就是1/2/4字节,如果是多字节,就要牵扯到字节序,UTF-8以单字节为编码单位,所以不存在字节序。

八进制的BOM:357、273、277,十六进制的BOM:EF、BB、BF,


在windows下保存文件编码为UTF-8会在文件头加上BOM,所以我们在读文件时会出现报错。在linux下用vim打开会看到<feff>,就是这个问题。

linux下

如何检测UTF-8编码中的BOM呢?

shell> grep -I-r -l $'\xEF\xBB\xBF' /path

如何删除UTF-8编码中的BOM呢?

shell> grep -I-r -l $'\xEF\xBB\xBF' /path | xargs sed -i 's/^\xEF\xBB\xBF//;q'


windows下把文件用记事本打开另存为ANSI就可以了。



<root xmlns="urn:schemas-upnp-org:device-1-0" xmlns:dlna="urn:schemas-dlna-org:device-1-0" configId="6046338"> <specVersion> <major>1</major> <minor>0</minor> </specVersion> <device> <deviceType>urn:schemas-upnp-org:device:MediaRenderer:1</deviceType> <friendlyName>Smart TV Pro</friendlyName> <URLBase>http://192.168.137.240:16630</URLBase> <manufacturer>Microsoft Corporation</manufacturer> <manufacturerURL>http://www.microsoft.com</manufacturerURL> <modelDescription>Media Renderer</modelDescription> <modelName>Windows Media Player</modelName> <modelURL>http://go.microsoft.com/fwlink/?LinkId=105926</modelURL> <UDN>uuid:ff3f3ffc-777f-4976-adee-e7fe7bf2fefb</UDN> <dlna:X_DLNADOC xmlns:dlna="urn:schemas-dlna-org:device-1-0">DMR-1.50</dlna:X_DLNADOC> <serviceList> <service> <serviceType>urn:schemas-upnp-org:service:AVTransport:1</serviceType> <serviceId>urn:upnp-org:serviceId:AVTransport</serviceId> <SCPDURL>AVTransport/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/scpd.xml</SCPDURL> <controlURL>AVTransport/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/control</controlURL> <eventSubURL>AVTransport/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/event</eventSubURL> </service> <service> <serviceType>urn:schemas-upnp-org:service:ConnectionManager:1</serviceType> <serviceId>urn:upnp-org:serviceId:ConnectionManager</serviceId> <SCPDURL>ConnectionManager/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/scpd.xml</SCPDURL> <controlURL>ConnectionManager/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/control</controlURL> <eventSubURL>ConnectionManager/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/event</eventSubURL> </service> <service> <serviceType>urn:schemas-upnp-org:service:RenderingControl:1</serviceType> <serviceId>urn:upnp-org:serviceId:RenderingControl</serviceId> <SCPDURL>RenderingControl/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/scpd.xml</SCPDURL> <controlURL>RenderingControl/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/control</controlURL> <eventSubURL>RenderingControl/ff3f3ffc-777f-4976-adee-e7fe7bf2fefb/event</eventSubURL> </service> </serviceList> </device> </root>
最新发布
06-02
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值