通过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&#x