响应的中文乱码问题
响应的中文乱码问题
使用resp向客户端回传数据时,会出现乱码问题。
解决方案一:
第一个原因,服务器的编码问题,服务器编码默认是ISO-8859-1,不支持中文,将其设置为UTF-8.
resp.setCharacterEncoding("UTF-8");
注意:该语句必须放在回传数据之前,即放在下面两句话之前:
PrintWriter writer=resp.getWriter();
writer.write("哈哈");
第二个原因,浏览器的编码问题,服务器的编码必须要和浏览器的编码一致才行。通过响应头,设置浏览器的编码方式。
resp.setHeader("Content-Type","text/html;charset=UTF-8");
package LWB;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
import java.io.IOException;
import java.io.PrintWriter;
public class ResponceIOServlet extends HttpServlet {
@Override
protected void doGet(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {
resp.setCharacterEncoding("UTF-8");
System.out.println(resp.getCharacterEncoding());
resp.setHeader("Content-Type","text/html;charset=UTF-8");
PrintWriter writer=resp.getWriter();
writer.write("哈哈");
}
}
解决方案二:
可以只用一条语句就完成上述的对浏览器和服务器的编码格式的修改
resp.setContentType("text/html;charset=UTF-8");