一次请求涉及到的编码转换过程
请求过程:页面编码 -->> http编码 -->> 反编译http编码 -->> 反编译页面编码
返回过程:1. 服务器端 (1. 指明服务器端编码,2. 指明页面展示编码),
2. 涉及到编译器的时候还要指明编码器编码(把源文件编译成class文件过程的编码)
3. 设置 IDE的编码格式
4. 文件本身的编码格式
servlet返回时,中文乱码。 解决方式分三个方面
- 设置返回的编码格式
response.setCharacterEncoding("utf-8");
- 设置页面展示的编码格式(页面默认用GB2312)
response.setHeader("Content-type", "text/html;charset=utf-8");
- 设置maven的编码格式
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
package com.wyy.express;
import java.io.IOException;
import javax.servlet.ServletException;
import javax.servlet.annotation.WebServlet;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
@WebServlet("/app")
public class App extends HttpServlet{
public void doGet(HttpServletRequest reques, HttpServletResponse response) throws ServletException, IOException{
response.setHeader("Content-type", "text/html;charset=utf-8");
response.setCharacterEncoding("utf-8");
response.getWriter().write("servlet from maven 快递 xx");
}
}
pom.xm
<properties>
<maven.compiler.source>1.8</maven.compiler.source>
<maven.compiler.target>1.8</maven.compiler.target>
<project.build.sourceEncoding>utf-8</project.build.sourceEncoding>
</properties>