为什么使用 JavaScript 中 string 的 trim 方法时要替换 \uFEFF 呢?

很多人都不带这个的么?

\uFEFF(Unicode 编码:U+FEFF )。它是 ES5 新增的空白符,叫「字节次序标记字符(Byte Order Mark)」,也就是 BOM;

Unicode3.2 之前,\uFEFF 表示「零宽不换行空格(Zero Width No-Break Space)」;

Unicode3.2 新增了 \u2060 用来表示零宽不换行空格, \uFEFF 就只用来表示「字节次序标记字符(Byte Order Mark)」;


String.prototype.trim 是 ES5 增加的方法,对于老旧浏览器,还得使用自己实现的 trim;

至少在 低版本的 IE浏览器下 ,jQuery 1.7.2 是无法过滤字符串两端的 BOM 字符。


考虑到某些浏览器实现的 trim 不过滤 <NBSP> 或 <BOM>,

于是 jQuery 多加了一层检测,jQuery 1.8.1 在之前版本的基础上就添加了对BOM的过滤



上面是引用过来的

说白了就是文件的BOM问题,

架设js通过Ajax获取内容,并判断内容是否等于abc的时候,如果ajax请求的文件存在BOM头,那么结果就是\uFEFF\u0061\u0062\u0063,那么判断的时候就会出错。所以把\uFEFF去掉。

一般都不需要这样处理,需要这样处理大多是因为没有规范文档编码

温馨提示:答案为网友推荐,仅供参考
第1个回答  2016-04-22
  \uFEFF(Unicode 编码:U+FEFF )。它是 ES5 新增的空白符,叫「字节次序标记字符(Byte Order Mark)」,也就是 BOM;
  Unicode3.2 之前,\uFEFF 表示「零宽不换行空格(Zero Width No-Break Space)」;
  Unicode3.2 新增了 \u2060 用来表示零宽不换行空格, \uFEFF 就只用来表示「字节次序标记字符(Byte Order Mark)」;

  String.prototype.trim 是 ES5 增加的方法,对于老旧浏览器,还得使用自己实现的 trim;
  至少在 低版本的 IE浏览器下 ,jQuery 1.7.2 是无法过滤字符串两端的 BOM 字符。

  考虑到某些浏览器实现的 trim 不过滤 <NBSP> 或 <BOM>,
  于是 jQuery 多加了一层检测,jQuery 1.8.1 在之前版本的基础上就添加了对BOM的过滤
  更多 请参考 :http://www.codesec.net/view/203109.html
  以上回答希望对你有所帮助,望采纳!
第2个回答  2016-05-09
字节顺序标记(BOM),\uFEFF,可以理解为空白字符的意思.
在window下面用记事本编辑文件的时候,如果保存为UNICODE或UTF-8,分别会在文件的开头加上两个字节“/xFF/xFE”和三个字 节“/xEF/xBB/xBF”。在读取的时候就可能会遇到问题,但是不同的环境对这几个多于字符的处理也不一样。
第3个回答  2016-10-17

    原因:这是编码格式引起的,没有采用UTF-8  无BOM格式导致,替换它主要是为了兼容一些乱码或者其他格式导致的问题。

    方法:只需要将文本转化为 UTF-8  无BOM格式即可。

第4个回答  2016-08-27
\uFEFF是UCS2编码的BOM,用来放在文件开头标记字节顺序。为了删掉BOM所以要去除它