js 向java传中文乱码_JS传递中文参数出现乱码的解决办法

一、window.open() 乱码:

JS中使用window.open("url?param="+paramvalue)传递参数出现乱码,提交的时候,客户端浏览器URL中显示参数是正确的,

但是传到了服务器端是是乱码。这种情况下需要在客户端对该参数进行编码,然后在服务器端解码即可。

1、JS客户端编码:

var selStr=document.getElementsByName('selStr')[0].value;

selStr=encodeURI(encodeURI(selStr));

window.open('printWindow.do?bm=j&selStr='+selStr+'');

注意:编码的时候需要使用两次encodeUri,写一个就是????号,写两个则输出: %4d%5a这种。

2、服务器端解码:

String tempSelStrs=request.getParameter("selStr").toString();

String selStr=java.net.URLDecoder.decode(tempSelStrs,"UTF-8");

二、SpringMVC,在JS用GET方式向后台传参出现乱码:

JS中代码:

//显示我创建的任务

function showTask(){

var str1 = $("#str1").val();

window.location.href="${pageContext.servletContext.contextPath }/workbench/task/query.html?str1="+encodeURI(encodeURI(str1));//GET方式传参

}

后台代码:

@RequestMapping(value = "query", method =RequestMethod.GET)//声明是GET方式传参publicString query(Model model, Task task, String pageNow,String pageSize,

HttpServletRequest request) {try{//解决GET方式传参时参数乱码的问题

if(task.getStr1() != null){

//将Bean中字段取出

task.setStr1(java.net.URLDecoder.decode(task.getStr1(),"UTF-8"));

}//获取登录用户信息

User user = (User) request.getSession().getAttribute("homeUser");

Integer userId= user.getUserId();//获取登录用户ID

task.setUserId(userId);

task.setUserNickName(user.getUserNickname()+";");//登录用户昵称

task.setDoTaskId(String.valueOf(user.getUserId())+";");//登录用户ID//1、获取下拉框数据

Map>> map =taskService.getDropDownData(userId);

model.addAttribute("map", map);if("".equals(task.getStr1()) || task.getStr1()==null){

task.setStr1("可输入任务、执行人查找");

}

model.addAttribute("task", task);

PageView pageView= null;if(Common.isEmpty(pageNow)) {

pageView= new PageView(1);

}else{

pageView= newPageView(Integer.parseInt(pageNow));

}//选择分页条数

if(pageSize!=null){

pageView.setPageSize(Integer.parseInt(pageSize));

model.addAttribute("pageSize", pageSize);

}else{

pageView.setPageSize(10);

model.addAttribute("pageSize", 10);

}//用于查询所有数据

if("可输入任务、执行人查找".equals(task.getStr1())){

task.setMyTask(null);

}else{

task.setMyTask(task.getStr1());

}

pageView=taskService.query(pageView, task);

model.addAttribute("pageView", pageView);

}catch(Exception e) {

e.printStackTrace();

}return Common.ROOT_PATH + "/workbench/task/list";

}

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值