JSP中传参中文乱码
来源:互联网 发布:英雄联盟mac版本下载 编辑:程序博客网 时间:2024/06/05 20:14
第一种方法:
1.传参处编码(编一次码)
function open(){
var userName = document.getElementById("userName");
userName = encodeURI(userName);// 编一次码。注:encodeURI是JS函数
window.location.href="/test.do?userName=+userName;
}
String userName = request.getParameter("userName");
userName = new String(userName.getBytes("ISO8859_1"), "UTF-8");
===========================经验证可行===========================
第二种方法:
1.传参处编码(编两次码)
function open(){
var userName = document.getElementById("userName");
userName = encodeURI(encodeURI(userName));// 要编两次码。注:encodeURI是JS函数
window.location.href="/test.do?userName=+userName;
}
2.action中:参数解码
String userName = request.getParameter("userName");
userName = java.net.URLDecoder.decode(userName ,"utf-8");// 解一次码
===========================经验证可行===========================
编码与解码的次数解释(网上摘录):
一种说法:使用encodeURI转码后,会出现特殊字符,这时候,就需要将特殊字符也转码,所以使用两次encodeURI。在传参是浏览器会对参数进行一次解码,所以在Action中只需解码一次就可以了。
另一种说法:客户端对参数进行二次编码,可以有效的避开“提交多字节字符”的这个棘手问题。因为第一次编码,你的参数内容便不带有多字节字符了,成了纯粹的 Ascii 字符串。(这里把编第一次的结果叫成 [STR_ENC1] 好了。[STR_ENC1] 是不带有多字节字符的)再编一次后,提交,接收时容器自动解一次 (容器自动解的这一次,不管是按 GBK 还是 UTF-8 还是 ISO-8859-1 都好,都能够正确的得到 [STR_ENC1])然后,再在程序中实现一次 decodeURIComponent (Java中通常使用 java.net.URLDecoder(***, "UTF-8")) 就可以得到想提交的参数的原值。
- JSP中传参中文乱码
- Jsp中文乱码小议
- Jsp中文乱码小议
- jsp中文乱码问题
- Jsp中文乱码小议
- JSP中文乱码处理
- JSP中文乱码处理
- JSP中文乱码解决之道
- JSP中文乱码处理
- 【Jsp中文乱码问题】
- jsp 中文乱码问题
- tomcat jsp 中文乱码
- JSP中文乱码问题
- JSP中文乱码问题
- JSP中文乱码问题
- JSP中文乱码解决
- JSP中文乱码问题
- jsp中文乱码解决方案
- HDU (动规路) Ignatius and the Princess III
- MongoDB012 MongoDB之MapReduce
- Java类加载器及其委托机制
- ios使用zxing
- 2013年开发者需要了解的10大开发趋势和技能
- JSP中传参中文乱码
- 利用dispatch_once创建单例
- VOID N2
- 神十载人飞船发射成功大家什么心情?
- VC&operate =操作(重载)解释
- 巧用Windows 7游戏管理器
- 加载dll
- Struts2、Spring3、MyBatis3整合ExtJS,完成ColumnTree 【一】
- JSP之JSTL functions