在JavaWeb中常会遇到乱码问题
这里就针对Request和Response记录几种解决方案
Request
- 采用GET方法的提交
Tomcat 9的版本对GET方式的提交已经解决了中文乱码问题,所以如果你使用的是Tomcat 9的版本可以直接把POST提交方式改为GET,就可以解决乱码了
- 在接收的Servlet中使用setCharacterEncoding()方法
但是注意此方法仅对POST提交起作用,无论什么版本的Tomcat的POST方法均可。
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//设置请求正文中的字符编码
request.setCharacterEncoding("UTF-8");
}
- POST和GET提交乱码均能解决的推荐法
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
//这里的name的字符编码是ISO8859-1
String name = request.getParameter("name");
//将name字符串按照原编码打散成为一个一个字节
byte[] bytes = name.getBytes("ISO8859-1");
//组装:将bytes字节数组按照指定字符编码编码进行组装
name=new String(bytes,"UTF-8");
String age = request.getParameter("age");
System.out.println("name:"+name);
System.out.println("age:"+age);
}
Response
- setContentType()方法
该方法设置响应的MIME类型(video/mp4、image/jpg等),以及该类型数据的字符编码,即响应的字符编码
response.setContentType("text/html;charset=utf-8");