HttpServletResponse解决中文乱码-----字符流输出response.getOutputStream()方式

* 以字节流输出 

response.getOutputStream()

      

         //1. 指定浏览器看这份数据使用的码表
               response.setHeader("Content-Type", "text/html;charset=UTF-8");
                
                //2. 指定输出的中文用的码表    
                 response.getOutputStream().write("计算机".getBytes());

###不管是字节流还是字符流,直接使用一行代码就可以了。 


	response.setContentType("text/html;charset=UTF-8");

	然后在写数据即可。

 

Response01:

package com.yuming.servlet;

import java.io.IOException;
import java.nio.charset.Charset;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

/**
 * Servlet implementation class Response01
 */
public class Response01 extends HttpServlet {

	protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
		//test01(response);
		
		//test02(response);
		
		//响应的数据中有中文,那么有可能出现中文乱码
			//2. 以字节流输出 response.getOutputStream()方式
		
		//以字节流输出
		
				/*
				 * 如果想让服务器端出去的中文,在客户端能够正常显示。只要确保一点。
				 * 
				 * 出去的时候用的编码 , 和 客户端看这份数据用的编码 是一样的。 
				 * 
				 * 默认情况下getOutputStream 输出使用的是UTF-8的码表 。 如果想指定具体的编码,可以在获取byte数组的时候,指定。 
				 * 
				 * 
				 * 
				 */
				
				//设置响应的数据类型是html文本,并且告知浏览器,使用UTF-8 来编码。 
				response.setContentType("text/html;charset=UTF-8");		
				
				//String这个类里面, getBytes()方法使用的码表,是UTF-8,  跟tomcat的默认码表没关系。 tomcat iso-8859-1
				 String csn = Charset.defaultCharset().name();
				 
				 System.out.println("默认的String里面的getBytes方法使用的码表是: "+ csn);
				
				//1. 指定浏览器看这份数据使用的码表
//				response.setHeader("Content-Type", "text/html;charset=UTF-8");
				
				//2. 指定输出的中文用的码表	
				 response.getOutputStream().write("计算机".getBytes());
		
		 
		
	}


	private void test02(HttpServletResponse response) throws IOException {
		//响应的数据中有中文,那么有可能出现中文乱码
			//1.以字符流输出  response.getWriter()方式
		
		//1.1 (设置输出的编码格式)指定输出到客户端的时候,这些文字使用UTF-8编码
		response.setCharacterEncoding("UTF-8");
		
		//2.直接规定浏览器看这份数据的时候,使用什么编码来看。
		response.setHeader("Content-Type", "text/html; charset=UTF-8");
		
		response.getWriter().write("北京");
	}


	private void test01(HttpServletResponse response) throws IOException {
		//1.以字符流的方式响应数据
		//response.getWriter().write("<h2>hello response1111111</h2>");
		
		//2.以字节流的方式响应数据
		response.getOutputStream().write("<h2>hello response222222222</h2>".getBytes());
		
		//3.设置当前请求的处理状态码
		//response.setStatus(0, "");
		
		//4.设置一个头
		//response.setHeader(name, value);
		//5.设置响应的内容类型,以及编码
		//response.setContentType(type);
	}

	
	protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException {
	
		doGet(request, response);
	}

}

 

  • 1
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值