在开发中,我们经常会遇到使用Response对象响应中文,会遇到乱码,有些人遇到了不知道怎么处理,会放在那里不管,我这里分享下我对于Response对象响应中文乱的码处理的一些心得吧:
/**
* Response响应中文的处理
*/
public class ResponseDemo3 extends HttpServlet {
private static final long serialVersionUID = 1L;
protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
test2(response);
}
/**
* 使用字符流输出中文
* @param response
* @throws IOException
* @throws UnsupportedEncodingException
*/
private void test2(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
// 方法一:
// 设置浏览器默认打开的时候采用的字符串:
// response.setHeader("Content-Type", "text/html;charset=UTF-8");
// 设置response获得字符流的缓冲区的编码:
// response.setCharacterEncoding("UTF-8");
// 方法二:
// 简化代码:
response.setContentType("text/html;charset=UTF-8");
response.getWriter().println("中文");
}
/**
* 使用字节流输出中文
* @param response
* @throws IOException
* @throws UnsupportedEncodingException
*/
private void test1(HttpServletResponse response) throws IOException, UnsupportedEncodingException {
// 使用字节流的方式输出中文:
ServletOutputStream outputStream = response.getOutputStream();
// 设置浏览器默认打开的时候采用的字符集
response.setHeader("Content-Type", "text/html;charset=UTF-8");
// 设置中文转成字节数字字符集编码
outputStream.write("中文".getBytes("UTF-8"));
}
protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
doGet(request, response);
}
}