aardio 官方社区

 找回密码
 注册会员

QQ登录

只需一步,快速开始

搜索
查看: 11660|回复: 8

分享一个获取网页源码时候去除bom的函数

[复制链接]

22

主题

39

回帖

357

积分

二级会员

积分
357
发表于 2014-2-26 15:16:56 | 显示全部楼层 |阅读模式

  1. function removeBom(str){
  2.         var a = ..string.slice(str,1,1);
  3.         var b = ..string.slice(str,2,2);
  4.         var c = ..string.slice(str,3,3);
  5.         a = ..string.unpack(a);
  6.         b = ..string.unpack(b);
  7.         c = ..string.unpack(c);
  8.         if(a == 239 && b==187 && c==191)
  9.         str = ..string.right(str,-4);
  10.         return str;
  11. }
复制代码

13

主题

295

回帖

1795

积分

荣誉会员

积分
1795
发表于 2014-2-26 15:28:50 | 显示全部楼层
s[1] 就可以直接取第一个字节的字节码,不需要写那么复杂。
最基础的语法文档还是要看的。

移除BOM 参考一下 web.json 里的源码
  1. if(  s[1] == 0xEF  && s[2] == 0xBB && s[3] == 0xBF ){
  2.         s = string.right(s,-4) ;
  3.         s = string.fromto(s);
  4. }
复制代码

22

主题

39

回帖

357

积分

二级会员

积分
357
 楼主| 发表于 2014-2-26 15:32:16 | 显示全部楼层

13

主题

295

回帖

1795

积分

荣誉会员

积分
1795
发表于 2014-2-26 15:32:47 | 显示全部楼层
BOM是文件编码,并不是用于网络的,所以网页返回BOM是错误的,某些网页浏览器可能会显示不正常。

22

主题

39

回帖

357

积分

二级会员

积分
357
 楼主| 发表于 2014-2-26 15:37:14 | 显示全部楼层
所以用innet.whttp获取的网页源代码,我们要先判断是否有bom,如果有就删除了

13

主题

295

回帖

1795

积分

荣誉会员

积分
1795
发表于 2014-2-26 15:52:45 | 显示全部楼层
renqiang 发表于 2014-2-26 15:37
所以用innet.whttp获取的网页源代码,我们要先判断是否有bom,如果有就删除了

一般不会有这个情况,如果是自己写的服务端,在服务端移除较好,
另外用 web.rest.client().request("网址") 会自动移除UTF-8 BOM

22

主题

39

回帖

357

积分

二级会员

积分
357
 楼主| 发表于 2014-2-26 15:57:53 | 显示全部楼层
好的,谢谢你auaau

13

主题

109

回帖

971

积分

三级会员

积分
971
发表于 2018-3-26 13:06:53 | 显示全部楼层
auaau 发表于 2014-2-26 15:28
s[1] 就可以直接取第一个字节的字节码,不需要写那么复杂。
最基础的语法文档还是要看的。

这样是不是更简单?
  1. s = string.replace(s, '^\xef\xbb\xbf', "" );
复制代码

170

主题

2184

回帖

1万

积分

管理员

积分
13236
发表于 2018-3-26 17:07:23 | 显示全部楼层
ejzhang 发表于 2018-3-26 13:06
这样是不是更简单?


BOM有多种,参考 fsys.codepage
您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

手机版|未经许可严禁引用或转载本站文章|aardio.com|aardio 官方社区 ( 皖ICP备09012014号 )

GMT+8, 2024-4-19 14:23 , Processed in 0.058175 second(s), 22 queries .

Powered by Discuz! X3.5

Copyright © 2001-2023 Tencent Cloud.

快速回复 返回顶部 返回列表