Jsp默认的字符编码格式是iso-8859-1
因为post方法与get方法传递参数的方式不一样,所以有不同的解决方法。
一、post乱码解决方法:
1.设置请求和响应的编码方式
//设置请求的编码格式
request.setCharacterEncoding("UTF-8");
//设置响应的编码格式
response.setCharacterEncoding("UTF-8");
或者
<%@page language="java" contentType="text/html;charset=utf-8"%>
post中文乱码还可以设置filter过滤器,直接使用代码就可以,最后要去web.xml中配置
public class CharacterEncoding implements Filter { @Override public void destroy() { } @Override public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { //这是post中文乱码的处理方式,get中文处理方式是在tomcat中配置 //设置字符编码 request.setCharacterEncoding("utf-8"); response.setCharacterEncoding("utf-8"); //注意这句一定要有,作用是将请求转发给过滤器链上下一个对象 //filter链 chain.doFilter(request, response); //然后还要去web.xml中配置 } @Override public void init(FilterConfig arg0) throws ServletException { } }
filter在web.xml中的配置代码
<filter> <filter-name>CharacterEncoding</filter-name> <filter-class>filter.CharacterEncoding</filter-class> </filter> <filter-mapping> <filter-name>CharacterEncoding</filter-name> <url-pattern>/*</url-pattern> </filter-mapping>
二、get乱码解决方法:
1.治标方法
//先获取登录页面username的数据
String username=request.getParameter("username");
//将username字符编码改为utf-8
String un=new String(username.getBytes("iso-8859-1"),"utf-8");
//然后打印输出un
out.print(un);
2.治本方法
在Tomcat安装目录下找到server.xml文件找到下面代码添加 URIEncoding="UTF-8"
D:Program Filesapache-tomcat-8.0.33apache-tomcat-8.0.33confserver.xml
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" URIEncoding="UTF-8"/>
或者
添加 useBodyEncodingForURI="true"
<Connector port="8080" protocol="HTTP/1.1"
connectionTimeout="20000"
redirectPort="8443" useBodyEncodingForURI="true"/>
---------------------------------------------------------------------------------------------------------------
在datebase.properties配置文件中 加入下面这句代码
可以避免中文输入到数据库产生乱码的情况
url=jdbc:mysql://127.0.0.1:3306/news?useUnicode=true&characterEncoding=utf-8