总的来说就是就是前后端的编码格式不统一
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
,但你一定要用其它什么格式来接收,也是可以在以下位置
- tomcat主目录 >> conf >> server.xml 里的
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
增加
URIEncoding="UTF-8"
来设置.这个说标识符的编码格式是utf-8
。
当然这个要和前端统一,如果前端发过来的是
GBK
格式的,我们这里也要设置GBK
- 如果是
multipart/form-data
格式的话,以上的不起作用。用fileUpload
框架来接收数据的话,可以用以下的来调整
// 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");
网友评论