【飞天奔月出品】java中的 URLEncoder.encode 对应javascript中的哪个函数?

今天优化live800 做延迟加载

 

前工程师 是这样写的 

 

 

 

<script language="javascript" src="http://chat32.live800.com/live800/chatClient/staticButton.js?jid=111111111&companyID=111111111&configID=11111111&codeType=custom&info=<%=java.net.URLEncoder.encode("userId="+ request.getAttribute("memberId")+"&name=" + request.getAttribute("memberName") + "&memo=", "UTF-8") %>"></script>

 

 

使用了 URLEncoder.encode 来 编码 info字段信息

 

 

做延迟加载的时候,就想有没有 对应javascript中的函数?

 

 

 

 

javadoc中是 这样 描述 URLEncoder 的

 

 

 

 

HTML 格式编码的实用工具类。该类包含了将 String 转换为 application/x-www-form-urlencoded MIME 格式的静态方法。有关 HTML 格式编码的更多信息,请参阅 HTML 规范。 

对 String 编码时,使用以下规则: 


字母数字字符 "a" 到 "z"、"A" 到 "Z" 和 "0" 到 "9" 保持不变。 
特殊字符 "."、"-"、"*" 和 "_" 保持不变。 
空格字符 " " 转换为一个加号 "+"。 
所有其他字符都是不安全的,因此首先使用一些编码机制将它们转换为一个或多个字节。然后每个字节用一个包含 3 个字符的字符串 "%xy" 表示,其中 xy 为该字节的两位十六进制表示形式。推荐的编码机制是 UTF-8。但是,出于兼容性考虑,如果未指定一种编码,则使用相应平台的默认编码。 
例如,使用 UTF-8 编码机制,字符串 "The string ü@foo-bar" 将转换为 "The+string+%C3%BC%40foo-bar",因为在 UTF-8 中,字符 ü 编码为两个字节,C3 (十六进制)和 BC (十六进制),字符 @ 编码为一个字节 40 (十六进制)。 

 

 

 

 

javascript 中 有 3个编码函数:

 

1.escape()

 

最古老的一个,这个函数现在已经不提倡使用

 

实际上,escape()不能直接用于URL编码,它的真正作用是返回一个字符的Unicode编码值。

 

 

比如“春节”的返回结果是%u6625%u828

 

 

它的具体规则是,除了ASCII字母、数字、标点符号“@ * _ + - . /”以外,对其他所有字符进行编码

\u0000\u00ff之间的符号被转成%xx的形式,其余符号被转成%uxxxx的形式。

 

 

 

2.encodeURI()

 

Javascript真正用来对URL编码的函数

 

 

 

它对整个URL进行编码,因此除了常见的符号以外,对网址中有特殊含义的符号“; / ? : @ & = + $ , #也不进行编码

 

编码后,它输出符号的utf-8形式,并且在每个字节前加上%

 

 

 

 

3.encodeURIComponent()

用于对URL组成部分进行个别编码,而不用于对整个URL进行编码

 

 

 

encodeURIComponent()中统统会对; / ? : @ & = + $ , #”被编码。

至于具体的编码方法,和encodeURI()是一样。

 

 

 

 

所以最相似的是 第三个 encodeURIComponent()

 

可以优化成:

 

 

 

 

$j(function(){
	var info=encodeURIComponent("userId=${empty member.id?'':member.id}&name=${empty member.loginName?'':member.loginName}&memo=");
	lazyLoadLive800(info);
})

 

 

 

 

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值