Servlet接收参数---乱码

2020-05-12  本文已影响0人  轻云绿原

总的来说就是就是前后端的编码格式不统一

1:请求的是"utf-8"格式

<meta charset="UTF-8">

2:但接收是乱码取出来时是乱码

那就是idea的默认编码不是"utf-8" 的
在取出参数前要设置一下编码格式

req.setCharacterEncoding("utf-8");

这样取出来的就不会是乱码。但这只对请求体里有效,文档是这样描述的

Overrides the name of the character encoding used in the body of this request. This method must be called prior to reading request parameters or reading input using getReader().

所以这只对POST请示有效,
GET呢?目前测试,可以直接接收utf-8,但你一定要用其它什么格式来接收,也是可以在以下位置

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

增加

URIEncoding="UTF-8"

来设置.这个说标识符的编码格式是utf-8

当然这个要和前端统一,如果前端发过来的是GBK格式的,我们这里也要设置GBK

// item是FileItem类型 .解决参数上传乱码问题
String value = item.getString("utf-8");
/// 解决文件上传乱码问题(文件名)
ServletFileUpload upload = new ServletFileUpload(factory);
upload.setHeaderEncoding("utf-8");

3:response返回时也是有这个问题

如果是纯文本的,用以下的设置

resp.setContentType("text/plain; charset=UTF-8");

如果是html的,可以直接用以下设置

resp.setCharacterEncoding("utf-8");
上一篇 下一篇

猜你喜欢

热点阅读