资料 05encodeURI来解决URL传中文参数乱码问题(转载)
来源:互联网 发布:狸窝软件官网 编辑:程序博客网 时间:2024/06/11 05:28
首先,在前端页面准备参数的时候,需要对中文参数进行encode处理:
var url = 'HelloWorldServlet?star_name='+encodeURI(encodeURI("刘德华"));window.open(url);
其次,在服务端后台程序代码中用java.net.Decoder进行解码,从而得到中文参数的真实值:
String starName = java.net.URLDecoder.decode(request.getParameter("star_name"),"UTF-8");
疑问1 前端在进行encode编码是,为什么用了两次encodeURI,而服务器后端在解码时只解了一次?
原因是:容器会默认帮你解一次码。
疑问2 容器会默认解一次码,那么为什么不直接在前端只进行一次encode,服务端程序直接request.getParameter(“star_name”) ?画蛇添足了吧?
原因是:容器默认解码时采用的编码是容器的默认编码,可能是UTF-8,GBK,也可能是其他编码方式。这与你的应用的编码方式未必会一致。所以你直接获取的话可能会出现乱码。
当然也可以通过修改容器的默认编码,而实现“前端一次encode——后端直接获取”的途径获取中文参数。
例如:Tomcat的默认编码修改方式:
修改%TOMCAT_HOME%/conf/server.xml,找到这行代码:
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8449" connectionTimeout="20000"/>
在后面可以追加URIEncoding属性,例如:
<Connector port="8080" protocol="HTTP/1.1" redirectPort="8449" connectionTimeout="20000" URIEncoding="UTF-8"/>
如果不方便改容器默认编码方式,或者应用程序本身就有多种编码方式的话,还是采取本文给出的解决方案,通过“前端两次encode——后端一次decode”的途径获取中文参数吧。
0 0
- 资料 05encodeURI来解决URL传中文参数乱码问题(转载)
- URL传中文参数导致乱码的解决方案之encodeURI
- jsp url传中文参数乱码问题
- url中传中文参数乱码问题
- 解决url传中文乱码问题
- 解决传中文参数乱码的问题
- 解决地址栏传中文参数乱码问题
- url传中文参数乱码
- 解决:JS代码URL传中文参数乱码
- JSP在URL中传中文参数乱码解决
- JSP内置对象(包括request和response)以及解决url传中文参数出现乱码问题
- URL传中文乱码问题
- URL传中文乱码问题
- url传中文乱码问题
- jsp页面url参数传中文乱码问题
- JS中URL传中文参数引发的乱码问题
- JS中URL传中文参数引发的乱码问题
- struts2的s:url标签传中文参数乱码问题
- springmvc 源码学习 handlerInterceptor
- SpringBoot加载静态资源
- PMP--项目整合管理(三)
- SpringIOC的初始化
- 电脑主机选购---硬盘
- 资料 05encodeURI来解决URL传中文参数乱码问题(转载)
- VBA:针对一个工作簿中多个表,显示表名中含特定字符的表,其他表隐藏
- 如何设置淘宝镜像
- 查看Chome浏览器中已保存的密码
- 文章标题
- VS自动代码整理和自动导包
- Java修改ArrayList的常见异常
- LRM-00109: could not open parameter file '/oracle/app/oracle/11.2.0/db_1/dbs/initracdb2.ora
- 队列实现