在发生乱码的时候,应该首先确定文件的保存编码和编辑的编码一致,排查过后再查看以下方法。
1.解决post提交方式的乱码问题
request.setCharacterEncoding("utf-8");
此时,页面应该与页面编码一致:
<%@page contentType="text/html;charset=utf-8"%>
2.解决get提交方式的乱码问题
方法一
使用 new String(str.getBytes("iso8859-1"), "utf-8");
例如:
String username = request.getParameter("username"); username = new String(username.getBytes("iso-8859-1"),"UTF-8");
或者写成一个函数来调用:
<%! String toCN(String str) { // 转换字符为utf-8编码 if (str == null) return str; else try { return new String(str.getBytes("iso8859-1"), "utf-8"); } catch (Exception e) { return str; } } String username = toCN(request.getParameter("username")); %>
设置服务器的配置文件,
tomcat 可以直接在 sever.xml 文件中,修改Connector参数,添加 URIEncoding="utf-8"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443"
URIEncoding="utf-8"/>
同样,也需要和页面的编码一致。