解决JS向Action传递中文参数乱码的双编码方案
本文介绍在JSP中使用JS向Action传递中文参数时产生乱码的解决方案。通过在JavaScript中对中文参数进行两次encodeURI转码,并在Action端使用java.net.URLDecoder.decode配合UTF-8编码进行解码,可有效解决中文显示异常问题。
JS向Action传递中文参数乱码问题背景
在项目开发过程中,通常只要整个项目统一采用UTF-8编码格式,从JSP表单向Action获取中文参数时便不会出现乱码。然而,当JSP页面中涉及JavaScript,并通过JS向Action传递中文参数时,往往会遇到中文乱码现象。经查阅相关资料,网上关于此问题的说法众说纷纭。
经过实际测试与验证,发现以下方法能够有效解决中文乱码问题。
JavaScript端双编码处理方案
在JSP页面的JavaScript代码中,对中文参数执行两次encodeURI转码操作,即使用encodeURI(encodeURI(中文参数))。具体示例如下。
代码如下:
function show(next,id,realName){
document.forms['f2'].action="usersearchNextPage?next="+next+"&id="+id+"&realName="+encodeURI(encodeURI(realName));
document.forms['f2'].submit();
} 其中,realName为需要传递的中文参数。因此,在构建提交URL时,需对realName进行两次转码处理,即调用encodeURI(encodeURI(realName))。
Action端解码实现
在Action端接收中文参数时,需进行解码操作。具体使用java.net.URLDecoder.decode(realName,"UTF-8")。
示例如下:
代码如下:
String realName = ServletActionContext.getRequest().getParameter("realName");
try {
realName = java.net.URLDecoder.decode(realName,"UTF-8");
} catch (UnsupportedEncodingException e1) {
e1.printStackTrace();
} 经过上述处理,中文乱码问题即可得到解决。
ES6模块化中js文件怎么用import和export交互
2026-11-05 17:00:48
JS读取本地文件时报错或无响应的常见原因
2026-11-05 16:32:31
let、const与var的区别:JavaScript变量声明最佳实践
2026-11-05 14:16:38
JS中直接定义静态二维数组的字面量写法
2026-11-05 14:16:08
JS 怎么查找字符串中所有匹配项的位置
2026-11-05 14:15:53
