1.      get请求传递中文时本地连正式库访问都正常,正式环境下单独访问报错

代码:

请求:project/projectInfo/export/?cks=’项目类型

public String export(ProjectIn foprojectInfo,

HttpServletRequest request,HttpServletResponse response, Model model) {

String cks =request.getParameter("cks");

//获取有被选中的字段

cks=new String(cks.getBytes("ISO-8859-1"),"utf-8");

return null;

}

本地能够正常获取到cks并对cks进行解码

问题原因:

本地tomcat中的server.xml文件:

<ConnectorconnectionTimeout="20000" port="8080"protocol="HTTP/1.1" redirectPort="8443" />

正式环境 tomcat中的server.xml文件:

<Connector connectionTimeout="20000"port="8080" protocol="HTTP/1.1"redirectPort="8443" maxPostSize="0" URIEncoding="UTF-8"/>

因为本地没有配置URIEncoding="UTF-8"原因对中文进行了解码,因此本地正常

而正式库已经tomcat服务器已经对get请求进行了解码,代码中又对该字符串进行了一次解码,所以就导致错误

解决方法:

代码中将

cks=new String(cks.getBytes("ISO-8859-1"),"utf-8");注释
---------------------
作者:ShiroGe
来源:CSDN
原文:https://blog.csdn.net/hfs1992/article/details/77233707
版权声明:本文为博主原创文章,转载请附上博文链接!

04-30 11:27