jsp向Action发送数据时出现乱码情况

jsp向Action发送数据时出现乱码情况

在这里插入图片描述点击筛选控制台打印发现出现乱码在这里插入图片描述最后发现是表单提交方式的问题在这里插入图片描述
改成post发送就没有问题在这里插入图片描述
到网上查询了一下

post请求为什么不会乱码?

jsp页面有pageEncoding=“UTF-8”,进行编码设置,服务端web.xml中有过滤器

org.springframework.web.filter.CharacterEncodingFilter进行request.setCharacterEncoding(“utf-8”)操作,

故在服务端获取的参数不会乱码。

get请求为什么会乱码?

get请求参数是通过URL传递的,浏览器默认的会对中文进行gbk编码(URL中如果含有中文等非ASCII字符,则浏览器会对它们进行URLEncode),

而且tomcat默认会对url进行ISO-8859-1编码(可通过修改server.xml设置

修改tomcat的配置文件server.xml:

<Connector URIEncoding=“UTF-8”

port=“8080” maxHttpHeaderSize=“8192”

maxThreads=“150” minSpareThreads=“25” maxSpareThreads=“75”

connectionTimeout=“20000” disableUploadTimeout=“true” />),

request.setCharacterEncoding(“utf-8”)设置的编码格式对url参数是不起作用的,

pageEncoding="UTF-8"对url传递也是不起作用的,wel.xml中的org.springframework.web.filter.CharacterEncodingFilter

过滤器实际则是request.setCharacterEncoding(“utf-8”)操作,也不起作用,故在服务端获取参数会出现乱码。

服务器端通过request.getParameter()解码查询参数(通常是iso-8859-1)

可通过先获取参数的ISO-8859-1字节,在根据gbk解码可获取参数,即:

String param = new String(urlParam.getBytes(“ISO-8859-1”),“gbk”),(urlParam则是url传递的参数)

猜你喜欢

转载自blog.csdn.net/qq_37244082/article/details/87877661