js URL编解码的应用说明

编码:

encodeURIComponent 将文本字符串编码为一个统一资源标识符 (URI) 的一个有效组件。 

说明 

encodeURIComponent方法返回一个已编码的 URI。如果您将编码结果传递给decodeURIComponent,那么将返回初始的字符串。因为encodeURIComponent方法对所有的字符编码,请注意,如果该字符串代表一个路径,例如/folder1/folder2/default.html,其中的斜杠也将被编码。这样一来,当该编码结果被作为请求发送到 web 服务器时将是无效的。如果字符串中包含不止一个 URI 组件,请使用encodeURI方法进行编码。 


encodeURI 方法返回编码为有效的统一资源标识符 (URI) 的字符串。 

说明 

encodeURI 方法返回一个已编码的 URI。如果将编码结果传递给 decodeURI,则将返回初始的字符串。encodeURI 不对下列字符进行编码:“:”、“/”、“;”和“?”。请使用 encodeURIComponent 对这些字符进行编码。 



escape 方法返回一个可在所有计算机上读取的编码 String 对象。 

说明

escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。例如,空格返回为""。 字符值大于 255 的字符以 %uxxxx 格式存储。注意 escape 方法不能用来对“统一资源标识符”(URI) 进行编码。对其编码应使用 encodeURI 和 encodeURIComponent 方法。 




解码:

decodeURI 方法返回一个已编码的统一资源标识符 (URI) 的非编码形式。 

说明 

使用 decodeURI 方法代替已经过时的 方法。 decodeURI 方法返回一个字符串值。 如果 URIString 无效,将发生 URIError


decodeURIComponent方法返回统一资源标识符 (URI) 的一个已编码组件的非编码形式。 

说明

URIComponent 是一个完整的 URI 的一部分。 如果 encodedURIString 无效,则将产生 URIError。 



JS编码后java后台的解码


解决方法一:

JavaScript

window.self.location="searchbytext.action?searchtext="+encodeURIComponent(encodeURIComponent(seartext));

Java

searchtext=java.NET.URLDecoder.decode(searchtext,"UTF-8");

为什么要两次编码的原因:后台java代码给searchtext赋值的时候,本身已经使用了一次解码,不过解码的结果依然不对。所以我们可以在页面上进行两次编码操作,这样后台自动的那次就可以抵消掉一次,然后在使用searchtext=java.Net.URLDecoder.decode(searchtext,"UTF-8");进行一次解码就好了。

解决方法二:

另外还有一种方法是JavaScript进行一次编码,后台java处理时换种想法就好了:

java代码:

String s = new String(request.getParameter("name").getBytes("ISO8859-1"), "UTF-8");




escape 方法 返回一个可在所有计算机上读取的编码 String 对象。 


说明

escape 方法返回一个包含 charstring 内容的字符串值(Unicode 格式)。所有空格、标点、重音符号以及任何其他非 ASCII 字符都用 %xx 编码替换,其中 xx 等于表示该字符的十六进制数。例如,空格返回为""。 字符值大于 255 的字符以 %uxxxx 格式存储。 

注意 escape 方法不能用来对“统一资源标识符”(URI) 进行编码。对其编码应使用 encodeURI 和 encodeURIComponent 方法。 


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

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值