首先在这里列出之前为了解决乱码问题而做的的一些设置(之前一直用的是表单提交):
1.jsp
<%@ page language="java" contentType="text/html;charset=UTF-8" pageEncoding="UTF-8"%>
pageEncoding 是 jsp 文件本身的编码
contentType 的 charset 是指服务器发送给客户端时的内容编码
2.web.xml
<?xml version="1.0" encoding="UTF-8"?>
3.servlet
response.setContentType("text/html;charset=UTF-8");
request.setCharacterEncoding("utf-8");
response.setCharacterEncoding("utf-8");
4.jdbc
conn=DriverManager.getConnection("jdbc:mysql://localhost:3306/test?user=root&password=123456&useUnicode=true&characterEncoding=UTF-8");
为什么还会乱码
对错误进行的定位及分析后发现应该是:
URL编码之后向服务器发送请求,而在服务器中未正确解码。
URL的三个 javascript 编码函数:escape(),encodeURI(),encodeURIComponent()。
解决
String message = request.getParameter("message");
message = new String(message.getBytes("ISO-8859-1"),"UTF-8");
其他方案
设置 tomcat 的 URIEncoding(还没试过)
在默认情况下,tomcat服务器使用的是ISO-8859-1编码格式来编码的。
- URIEncoding参数对get请求的URL进行编码。所以我们只需要在tomcat的
server.xml
文件<Connector>标签中加上URIEncoding=”utf-8″
即可。
- 在Tomcat中设置编码为UTF-8的地方增加一个属性{seBodyEncodingForURI="true"}
推荐阅读:
解决URL中文乱码问题
解决jsp参数传递乱码的问题