通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码问题,解决方案有很多种,本文主要介绍如何通过encodeURI来解决中文乱码问题:

first:前端传递参数的时候需要对中文参数进行两次encodeURI处理:

​var requestUrl = 'url?roleName='+encodeURI(encodeURI("rowObj.appName"));

注:rowObj.appName​表示即将传到后台的带中文的字符串

​second:在服务器端后台程序代码中要用java.net.Decode进行解码,得到中文:

String appName= java.net.URLDecoder.decode(request.getParameter("roleName"),"UTF-8");

两步搞定!

然而,为什么前端要进行两次encodeURI???原因如下:

1、encodeURI函数主要是来对URI来做转码,它默认采用的是utf-8的编码;​

2、常规来看,中文汉字在utf-8中一般是3个字节构成,每一个字节会转换成16进制的编码,同时加上%号;

假设页面中需要传到后台的中文是一个“中”字,按照下面的过程走一遍:

1)第一次encodeURI,按照utf-8的方式获取字节数变成[-28,-72,-83],对字节码数组进行遍历,把每个字节转化成对应的16进制数,于是就变成了[E4,B8,AD],最终变成[%  E4,%  B8,%  AD]   (注意:请去掉%和编码中间的空格,我这边写出来你们看到就是乱码了,下面的这种也是一样),此时已经没有了多字节字符,全部都是单字节字符。

2)第二次encodeURI进行编码,会把%看做转义字符,并且不编码%后面的字符,会把%变为%​25,于是刚刚的数组就变成了[%  E4,%  B8,%  AD],然后就把处理好的[%  E4,%  B8,%  AD]发往服务器,当应用服务器调用getparameter方法时,getparameter方法会去向应用服务器请求参数,然而应用服务器最初收到的就是从前端发来的[%  E4,%  B8,%  AD],应用服务器容器会默认解一次码,而容器默认解码时采用的编码是容器的默认编码,可能是utf-8,GBK,或者ISO-8859,都能得到[%  E4,%  B8,%  AD],因为会把%解析成%,并且把这个值返回给getparameter方法;

3)最终用​java.net.Decode 采用utf-8编码进行解码,就能得到“中”字了;

所以,如果当时只是单单编码一次,当​容易自动解码(默认解一次码)的时候,如果是按照 ISO-8859 去解码 UTF-8 编码的东西然后返回给getparameter方法就是乱码了。

核心代码:

js :​   encodeURI(encodeURI("rowObj.appName"))

java :java.net.URLDecoder.decode(request.getParameter("roleName"),"UTF-8");  ​

个人小结,仅做参考,如有问题,欢迎各位大神指教,另外,感谢两篇参考文献,地址:

​http://blog.csdn.net/howlaa/article/details/12834595

http://www.tuicool.com/articles/fuqIBju

URL传中文参数导致乱码的解决方案之encodeURI的更多相关文章

  1. [转]URL传中文参数导致乱码的解决方案之encodeURI

    通过URL传中文参数时,在服务端后台获取到的值往往会出现乱码.解决方案有很多种.本文介绍如何通过encodeURI来解决中文乱码问题. 首先,在前端页面准备参数的时候,需要对中文参数进行encode处 ...

  2. (转) jsp页面 URL传中文参数到Action里面出现乱码

    jsp页面 URL传中文参数到Action里面出现乱码,方法如下: 第一种:在Action中用 new String(str.getBytes("ISO8859_1"), &quo ...

  3. JS URL传中文参数引发的乱码问题

    今天的项目中碰到了一个乱码问题,从JS里传URL到服务器,URL中有中文参数,服务器里读出的中文参数来的全是“?”,查了网上JS编码相关资料得以解决. 解决方法一: 1.在JS里对中文参数进行两次转码 ...

  4. 从js向Action传中文参数出现乱码问题的解决方法

    Action获取jsp表单中的中文参数,只要整个项目都采用UTF-8编码格式都不会出现乱码问题:但JSP中用到JS,并从JS向Action传中文参数,就会出现中文乱的现象     做项目的时候,发现A ...

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

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

  6. 解决url传中文参数问题

    项目中要做一个表格导出功能,用的是location.url传值给后台导出表格数据.由于传中文会出现乱码现象.故需要给参数转码,具体如下: 对于url要传的中文参数进行两次编码(注意是两次),即enco ...

  7. spring mvc 框架URL接收中文参数的乱码解决方案

    后台可能就会出现乱码,具体解决方案如下: 一. 配置tomcat目录下的service.xml文件 tomcat7/conf/server.xml 给该行代码加上 URIEncoding=" ...

  8. jsp页面之间传中文参数显示乱码问题的解决

    最近在项目中遇到jsp页面通过url传递参数,出现乱码,但是在本地是正常显示,在服务器上却是乱码,找了好久都没找到解决方法,最终在大神的帮助下解决了这个问题 比如从a.jsp像b.jsp页面传递参数 ...

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

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

随机推荐

  1. 咖啡师之路:第一日一杯Espresso

    代码敲累了.产品要发布了.熬夜啊加班啊. 精神完全不在状态. 咋办--- 咋办--- 咋办---! 来一杯Espresso浓缩咖啡.各位码农,码神们的必备良品! 咖啡每天要2-3杯,不管是速溶还是现磨 ...

  2. 20155304 2016-2017-2 《Java程序设计》第三周学习总结

    20155304 2016-2017-2 <Java程序设计>第三周学习总结 教材学习内容总结 第四章 类与对象 定义: 对象(Object):存在的具体实体,具有明确的状态和行为. 类( ...

  3. wemall doraemon中Android app商城系统解决左侧抽屉菜单和viewpager不能兼容问题

    完美解决左侧抽屉菜单和viewpager不能兼容左右滑动的问题,可进行参考. WeMall-Client/res/layout/wemall_main_ui.xml </RadioGroup&g ...

  4. vue关于class和样式的使用

    这篇文章主要为大家详细介绍了Vue.js的Class与样式绑定,具有一定的参考价值,感兴趣的小伙伴们可以参考一下 数据绑定一个常见需求是操作元素的 class 列表和它的内联样式.因为它们都是 att ...

  5. Java设计模式之《调停者模式》及应用场景

    原创作品,可以转载,但是请标注出处地址:http://www.cnblogs.com/V1haoge/p/6518603.html 调停者模式. 我们想象一下这样的场景:一个系统内部通过许多的类互相之 ...

  6. 升级后 VTE 类虚拟终端不工作

    故障现象 运行 vte 终端,如 gnome terminal.sakura 等光标不出来.xterm 可以运行. 在 xterm 终端中运行 gnome terminal 出现一下错误: grant ...

  7. vue学习笔记(一)关于事件冒泡和键盘事件 以及与Angular的区别

    一.事件冒泡 方法一.使用event.cancelBubble = true来组织冒泡 <div @click="show2()"> <input type=&q ...

  8. javascript写贪吃蛇游戏(20行代码!)

    <!doctype html> <html> <body> <canvas id="can" width="400" ...

  9. MySQL常用函数及日期

    一.数学函数 数学函数主要用于处理数字,包括整型.浮点数等. ABS(x) 返回x的绝对值 SELECT ABS(-1) -- 返回1 CEIL(x),CEILING(x) 返回大于或等于x的最小整数 ...

  10. Mac本地编辑服务器代码

    windows上映射网络驱动器可以直接在本地编辑远程服务器的代码,那么在mac上怎么配置呢? 1.打开finder——前往——连接服务器——输入:smb://********(你的机器名) 2.输入服 ...