Tomcat 中文编码问题
一般Tomcat默认的编码方式是ISO-8859-1,不支持中文。
在请求信息包含中文时会出现乱码问题。
解决方案如下:
前端
在HTML页面设置编码方式
1 | <meta charset="UTF-8"> |
后端
POST
在 获取request参数前(即request.getParameter();
前)加入以下代码设置解码方式为UTF-8。
1 | request.setCharacterEncoding("UTF-8"); |
在返回数据前(即response.getWriter();
前)加入以下代码设置编码方式为UTF-8。
1 | response.setCharacterEncoding("UTF-8"); |
加入以下代码通知浏览器以UTF-8解码。
1 | response.setContentType("text/html;charset=UTF-8"); |
GET
在 获取request参数后,对参数进行二次编码再解码。
如对searchVal进行二次编码再解码:
1 | searchVal = new String(searchVal.getBytes("ISO-8859-1"), "UTF-8"); |
Tomcat版本如果大于8则不需要进行此处理。
但GET请求中参数应尽量避免中文。
在返回数据前的处理和POST相同。