javascript

位置:IT落伍者 >> javascript >> 浏览文章

js简单实例处理url特殊符号&处理


发布日期:2018年07月10日
 
js简单实例处理url特殊符号&处理

url里的参数内容包含&符合我有两种方法解决
其一方法是在页面用JS转码例子如下(前端处理)
<<a href="#" onclick="test(${grouptype}${groupcn })">${groupcn })</a>
<script language="javascript">
function test(ab){
alert("test");
location + a + &cn= + encodeURIComponent(b);
}
</script>
其二方法是在后端处理
>>>>>>>>>>>>>>>>>>>>jsp:
<a href="groupsDetailServlet?cn=${groupencodedCN }&groupTypeForDetail=${GroupType}"+>${groupcn }</a>
>>>>>>>>>>>>>>>>>>>>java bean: group
String cn;//要显示的CN
String encodedCN;//当参数传的CN
public Group(String cn) { this(); thiscn = cn; thisencodedCN =LdapUtilencodeURLStr(cn); }
public void setCn (String name) { thiscn = name; setEncodedCN(LdapUtilencodeURLStr(cn)); }
public String getCn () { return cn; }
public String getEncodedCN () { return encodedCN; }
public void setEncodedCN (String cn) { thisencodedCN = cn; }

>>>>>>>>>>>>>>>>>>>>调用类里处理解码
String cn = LdapUtildecodeURLStr(encodedCN);
>>>>>>>>>>>>>>>>>>>>LdapUtiljava
public static String encodeURLStr(String src)
{
return src != null && srctrim()length() > ? srcreplaceAll("&" "@") : "";
}
public static String decodeURLStr(String src)
{
return src != null && srctrim()length() > ? srcreplaceAll("@" "&") : "";
}

以下是网络搜索资料分享
在使用url进行参数传递时经常会传递一些中文名(或含有特殊字符)的参数或URL地址在后台处理时会发生转换错误在有些传递页面使用GB而在接收页面使用UTF这样接收到的参数就可能会与原来发生不一致使用服务器端的 urlEncode函数编码的URL与使用客户端javascript的encodeURI函数编码的URL结果就不一样javascript对文字进行编码涉及 个函数 escapeencodeURIencodeURIComponent相应 个解码函数 unescapedecodeURIdecodeURIComponent

javaScript中的编码方法
escape () 方法采用ISO Latin字符集对指定的字符串进行编码 所有的空格符标点符号特殊字符以及其他非ASCII字符都将被转化成%xx格式的字符编码(xx等于该字符在字符集表里面的编码的进制数字)比如空格符对应的编码是%unescape方法与此相反不会被此方法编码的字符 @ * / +
encodeURI ()方法把URI字符串采用UTF编码格式转化成escape格式的字符串 不会被此方法编码的字符! @ # $& * ( ) = : / ; ? +
encodeURIComponent ()方法把URI字符串采用UTF编码格式转化成escape格式的字符串与encodeURI()相比这个方法将对更多的字符进行编码比如 / 等字符 所以如果字符串里面包含了URI的几个部分的话不能用这个方法来进行编码否则 / 字符被编码之后URL将显示错误不会被此方法编码的字符! * ( )
因此对于中文字符串来说如果不希望把字符串编码格式转化成UTF格式的(比如原页面和目标页面的charset是一致的时候)只需要使用escape如果你的页面是GB或者其他的编码而接受参数的页面是 UTF编码的就要采用encodeURI或者encodeURIComponent
另外encodeURI/encodeURIComponent是在javascript之后引进的 escape则在javascript版本就有
传递参数时需要使用 encodeURIComponent这样组合的 url 才不会被 # 等特殊字符截断例如<script language="javascript">documentwrite(<a href="+encodeURIComponent ("+">退出 </a>);</script>
进行 url跳转时可以整体使用 encodeURI 例如Locationhref=encodeURI ("百度 &ct=");
js 使用数据时可以使用escape 例如搜藏中history 纪录
escape对 以外的unicode 值进行编码时输出 %u**** 格式其它情况下escape encodeURI encodeURIComponent编码结果相同

最多使用的应为encodeURIComponent 它是将中文韩文等特殊字符转换成utf 格式的 url 编码所以如果给后台传递参数需要使用encodeURIComponent 时需要后台解码对 utf 支持(form 中的编码方式和当前页面编码方式相同)
escape不编码字符有 * + / @ _ az AZ
encodeURI不编码字符有 ! # $ & ( ) * + / : ; = ? @ _ ~ az AZ
encodeURIComponent不编码字符有 ! ( ) * _ ~ az AZ
以下是url中可能用到的特殊字符及在url中的经过编码后的值(略)
项目中发现直接对url中的参数部分做encodeURI() 编码转换后台servlet通过getParamater()获取时不需要转换可以直接获取到正确的值 说明参数没有用到中文框架用的是struts框架

上一篇:JS实现简单的Canvas画图实例

下一篇:js代码-鼠标划过时整行变色