使用PrintWriter流向客户端浏览器输出中文数据
一、使用PrintWriter流输出中文注意问题
response.setCharacterEncoding("UTF-8");//设置将字符以"UTF-8"编码输出到客户端浏览器
PrintWriter out = response.getWriter();//获取PrintWriter输出流
第二行代码: PrintWriter out = response.getWriter(); 必须放在 第一行: response.setCharacterEncoding("UTF-8"); 之后,
否则 response.setCharacterEncoding("UTF-8") 这行代码的设置将无效,浏览器显示的时候还是乱码。
二、设置响应头,控制浏览器以指定的字符编码编码进行显示
通过设置响应头控制浏览器以UTF-8的编码显示数据,如果不加这句话,那么浏览器显示的将是乱码:
response.setHeader("content-type", "text/html;charset=UTF-8");
另:
使用HTML语言里面的<meta>标签来控制浏览器行为,模拟通过设置响应头控制浏览器行为
response.getWriter().write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'/>");
等同于 response.setHeader("content-type", "text/html;charset=UTF-8");
response.getWriter().write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'/>");
三、代码:
package com.servlet.study;
import java.io.IOException;
import java.io.PrintWriter;
import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;
public class ResponseD extends HttpServlet {
private static final long serialVersionUID = 4312868947607181532L;
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
outputChineseByPrintWriter(response);//使用PrintWriter流输出中文
}
/**
* 使用PrintWriter流输出中文
* @param request
* @param response
* @throws IOException
*/
public void outputChineseByPrintWriter(HttpServletResponse response) throws IOException{
String data = "中国123";
//response.setHeader("content-type", "text/html;charset=UTF-8");
response.setCharacterEncoding("UTF-8");//设置将字符以"UTF-8"编码输出到客户端浏览器
PrintWriter out = response.getWriter();//获取PrintWriter输出流
out.write("<meta http-equiv='content-type' content='text/html;charset=UTF-8'/>");
out.write(data);//使用PrintWriter流向客户端输出字符
}
public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}
}
四、运行结果: