搜索
查看: 2944|回复: 8

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

[复制链接]

22

主题

62

帖子

357

积分

二级会员

Rank: 3Rank: 3

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

  1. function removeBom(str){
  2.         var a = ..string.sub(str,1,1);
  3.         var b = ..string.sub(str,2,2);
  4.         var c = ..string.sub(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. }
复制代码
回复

使用道具 举报

12

主题

309

帖子

1798

积分

荣誉会员

Rank: 8Rank: 8

积分
1798
发表于 2014-2-26 15:28:50 | 显示全部楼层

s[1] 就可以直接取第一个字节的字节码,不需要写那么复杂。 最基础的语法文档还是要看的。 移除BOM 参考一下 web.json 里的源码 [cod

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

主题

62

帖子

357

积分

二级会员

Rank: 3Rank: 3

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

{:victory:}

回复

使用道具 举报

12

主题

309

帖子

1798

积分

荣誉会员

Rank: 8Rank: 8

积分
1798
发表于 2014-2-26 15:32:47 | 显示全部楼层

BOM是文件编码,并不是用于网络的,所以网页返回BOM是错误的,某些网页浏览器可能会显示不正常。

BOM是文件编码,并不是用于网络的,所以网页返回BOM是错误的,某些网页浏览器可能会显示不正常。
回复

使用道具 举报

22

主题

62

帖子

357

积分

二级会员

Rank: 3Rank: 3

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

所以用innet.whttp获取的网页源代码,我们要先判断是否有bom,如果有就删除了

所以用innet.whttp获取的网页源代码,我们要先判断是否有bom,如果有就删除了
回复

使用道具 举报

12

主题

309

帖子

1798

积分

荣誉会员

Rank: 8Rank: 8

积分
1798
发表于 2014-2-26 15:52:45 | 显示全部楼层

[quote][size=2][url=forum.php?mod=redirect&goto=findpost&pid=64765&ptid=11644][c

renqiang 发表于 2014-2-26 15:37
所以用innet.whttp获取的网页源代码,我们要先判断是否有bom,如果有就删除了

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

使用道具 举报

22

主题

62

帖子

357

积分

二级会员

Rank: 3Rank: 3

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

{:3_41:}好的,谢谢你auaau

好的,谢谢你auaau
回复

使用道具 举报

13

主题

122

帖子

966

积分

三级会员

Rank: 4

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

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

使用道具 举报

185

主题

2541

帖子

1万

积分

管理员

Rank: 9Rank: 9Rank: 9

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


BOM有多种,参考 fsys.codepage
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册会员

本版积分规则

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

GMT+8, 2018-10-23 09:57 , Processed in 0.062500 second(s), 22 queries .

Powered by Discuz! X3.4

© 2001-2017 Comsenz Inc.

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