一、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方式传参
public String 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<String,List<Map<String,String>>> 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 = new PageView(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";
}

JS传递中文参数出现乱码的解决办法的更多相关文章

  1. springmvc将处理后的数据通过get方法传给页面时,可能会出现乱码。下面对于get请求中文参数出现乱码提出解决办法。

    对于get请求中文参数出现乱码解决办法有两个: 1.修改tomcat配置文件(tomcat--->conf--->server.xml)添加编码与工程编码一致,如下: <Connec ...

  2. 使用jquery的$.ajax向服务端传递中文,避免乱码的解决办法!

    在js里,对中文使用下面的方法 encodeURIComponent(var) 函数 就ok了!

  3. SSH通过超链接传递中文参数出现乱码问题

    通过超链接传递中文参数出现乱码问题 tomcat中的server.xml文件中修改如下配置: <Connector port="8080" protocol="HT ...

  4. 通过URL传递中文参数的乱码处理

    环境:web.xml中配置了 <filter> <filter-name>encodingFilter</filter-name> <filter-class ...

  5. [转]asp.net URL中包含中文参数造成乱码的解决方法

    本文转自:http://www.jb51.net/article/22437.htm 问题: 前段时间,在系统中做了一个类似于友情链接的功能块,一直运行良好,直到有一天加了类似于以下的链接地址:htt ...

  6. DELPHI7调用BERLIN中间件的中文字段名乱码的解决办法

    MSSQL数据库的表使用中文字段名,BERLIN开发的DATASNAP中间件,DELPHI7调用中间件的查询方法返回数据给CLIENTDATASET.DATA,发现中文字段名乱码,中文字段名的值可以正 ...

  7. VS2008中MFC界面编程Caption中文全是乱码的解决办法 -转载

    一.问题 在预览状态下可能看到中文,但是编译运行后对话框中的中文全是问号.即使你用的VS中文版,即使你也用了Unicode编码,即使有条件编译 #ifdef _WIN32LANGUAGE LANG_C ...

  8. 【转】Source Insight中文注释为乱码的解决办法

    我网上查了一堆解决办法,但是都是2017年以前的,并且都是针对于source insight 3.5及以下版本的解决方案,软件版本都到4.0了,应该有新方法出现. 干货:Source Insight ...

  9. Mysql向存储过程中传递中文参数变成乱码的解决方案

    今天做程序需要用到一个存储过程,然后用php程序调用.  存储过程如下: delimiter $$ CREATE PROCEDURE disagree_upgrade_detail(a int,b t ...

随机推荐

  1. Linux命令大全(非常全,史上最全)

    最近学习Linux,最大的体验就是它的很多东西都需要由命令来进行控制,下面是我总结的一些命令,供大家参考: 系统信息   arch 显示机器的处理器架构 uname -m 显示机器的处理器架构 una ...

  2. 关于javascript的一个小问题,请问有人看出啥问题吗?

    最近学习javascript,有一个问题挺奇怪的,先贴出代码: function binarySearch(){ var arr = [0,1,2,3]; var res = actbinarySea ...

  3. 单词 (Play on Words UVA - 10129 )

    题目描述: 原题:https://vjudge.net/problem/UVA-10129 题目思路: 1.明显是判断欧拉路径 2.欧拉路径的两个条件 a.图连通 b.至多为两个奇点,且一个为起点一个 ...

  4. mapReduce入门教程

    什么是MapReduce MapReduce是Google提出的一个软件架构,用于大规模数据集(大于1TB)的并行运算.概念"Map(映射)"和"Reduce(归纳)&q ...

  5. C指针函数中的局部变量返回

    所谓指针函数其实就是  :一个函数的返回值为指针. 指针函数定义:返回类型标识符*  函数名(形参列表){函数体} eg:   int*  fun1(int n){} 指针函数和局部变量返回解析: 简 ...

  6. python作业:三级菜单(第一周)

    一.作业需求: 1. 运行程序输出第一级菜单 2. 选择一级菜单某项,输出二级菜单,同理输出三级菜单 3. 菜单数据保存在文件中 4. 让用户选择是否要退出 5. 有返回上一级菜单的功能 二.三级菜单 ...

  7. LeetCode - 13. Roman to Integer - 思考if-else与switch的比较 - ( C++ ) - 解题报告

    1.题目: 原题:Given a roman numeral, convert it to an integer. Input is guaranteed to be within the range ...

  8. JS中通过数组的方式操作字符串 数组是个好东西 ....

    题目:使用JS将 var str="what are you nong sha lei",通过您的方法转换为"What Are You Nong Sha Lei" ...

  9. 关于PHP使用GD库生成的验证码无法在别处显示

    https://segmentfault.com/q/1010000002522270

  10. lintcode-156-合并区间

    156-合并区间 给出若干闭合区间,合并所有重叠的部分. 样例 给出的区间列表 => 合并后的区间列表: [ [ [1, 3], [1, 6], [2, 6], => [8, 10], [ ...