URL传参带特殊字符,js中对中文编码解码
来源:互联网 发布:office2012激活软件 编辑:程序博客网 时间:2024/05/15 12:04
URL传参带特殊字符,js中对中文编码解码
有些符号在URL中是不能直接传递的,如果要在URL中传递这些特殊符号,那么就要使用他们的编码了。编码的格式为:%加字符的ASCII码,即一个百分号%,后面跟对应字符的ASCII(16进制)码值。例如 空格的编码值是"%20"。
如果不使用转义字符,这些编码就会当URL中定义的特殊字符处理。
下表中列出了一些URL特殊符号及编码 十六进制值
1.+ URL 中+号表示空格 %2B
2.空格 URL中的空格可以用+号或者编码 %20
3./ 分隔目录和子目录 %2F
4.? 分隔实际的 URL 和参数 %3F
5.% 指定特殊字符 %25
6.# 表示书签 %23
7.& URL 中指定的参数间的分隔符 %26
8.= URL 中指定参数的值 %3D
/***
* 对 特殊字符进行重新编码
* **/
function URLencode(sStr){
return escape(sStr).replace(/\+/g, '%2B').replace(/\"/g,'%22').replace(/\'/g, '%27').replace(/\//g,'%2F').replace(/\#/g,'%23');
}
在通过url传参时,有些特殊字符在jsp页面间传递时变成了%+ASCII码,所以在传递前对其进行编码,接收后再转码就OK了
通过encodeURI()方法编码,再通过decodeURI()转码即可
URL编码与两次encodeURI
当使用地址栏提交查询参数时,如果不编码,非英文字符会按照操作系统的字符集进行编码提交到服务器,服务器会按照配置的字符集进行解码,所以如果两者不一致就会导致乱码。
encodeURI函数采用UTF-8对URL进行编码,所以如果服务器在进行解码时使用的是其他的编码方式就会出现乱码,默认的服务器配置的解码字符集都不是UTF-8,所以大部分情况下地址栏提交中文查询参数时会产生乱码;针对这种情况,可以连续使用两次encodeURI在客户端(主要指浏览器)对非英文字符进行编码,然后在服务端使用java.net.URLDecoder(String."UTF-8")解码,即可得到正确的中文。
原理:
如果只进行一次encodeURI,得到的是UTF-8形式的URL,服务器端通过request.getParameter()解码查询参数(通常是iso-8859-1)就会得到乱码。
如果进行两次encodeURI,第一次编码得到的是UTF-8形式的URL,第二次编码得到的依然是UTF-8形式的URL,但是在效果上相当于首先进行了一次UTF-8编码(此时已经全部转换为ASCII字符),再进行了一次iso-8859-1编码,因为对英文字符来说UTF-8编码和ISO-8859-1编码的效果相同。在服务器端,首先通过request.getParameter()自动进行第一次解码(可能是gb2312,gbk,utf-8,iso-8859-1等字符集,对结果无影响)得到ascii字符,然后再使用UTF-8进行第二次解码,通常使用java.net.URLDecoder("","UTF-8")方法。
两次编码两次解码的过程为:
UTF-8编码->UTF-8(iso-8859-1)编码->iso-8859-1解码->UTF-8解码,编码和解码的过程是对称的,所以不会出现乱码。
- URL传参带特殊字符,js中对中文编码解码
- url中中文字符编码和解码
- URL编码与解码(特殊字符)
- js 对编码后的中文字符解码
- Android URL中关于中文特殊字符的编码
- JS 和 Java 中URL特殊字符编码方式
- java web url编码与解码--中文乱码和特殊字符转义问题
- url中文特殊字符等编码
- URL中编码URL特殊字符
- URL中编码URL特殊字符
- URL中编码URL特殊字符
- URL中编码URL特殊字符
- C++中使用IXMLHTTPRequest对象调用Web API时,对URL中的特殊字符(或中文)编码
- 在js中处理特殊字符对应的中文编码
- URL传递中文参数乱码----js对url进行编码和解码
- JS对URL字符串进行编码/解码
- URL编码规则:URL中编码URL特殊字符
- 网址URL中特殊字符转义编码
- 塞缪尔《青春》
- JavaSE总结篇
- LeetCode-String to Integer (atoi)
- MyEclipse中项目层次显示问题
- malloc调用后 发生了什么
- URL传参带特殊字符,js中对中文编码解码
- Java网络编程详解
- iPad图片拾取器
- 中文字符及其中文标点符号正则表达式匹配
- 一个日文iphone学习站点
- Abstract Server模式
- 用模板写哈夫曼编码
- Oracle Show_space 过程 使用示例 与 注释
- JDK1.5新特性之枚举