Web|HttpServletResponse 对象编码发送信息及浏览器端解码显示信息原理分析

服务器端是把要发送的信息进行编码为对应为字节流,发送给浏览器。浏览器再对接收到的字节流信息进行解码显示。

目录

1 原理过程分析  

2 服务器端和浏览器端编码设置 

3 推荐方法   

4 代码示例


​​​​​​​

1 原理过程分析  

服务器端:首先服务器端要把信息转换成成字节流。
若你指定编码格式,服务器端使用你指定的编码格式进行编码转换成字节流。
若你没有指定编码格式,服务器端会使用它的默认编码格式 ISO-8859-1 转换成字节流。
接着服务器端把转换好的字节流发送给浏览器。
   
浏览器端: 再接着就是浏览器的工作了,浏览器拿到这些字节流,要进行解码显示。
浏览器首先会从(2.1)响应头,或(2.2)响应体中进行查找,看是否可以找到指定的编码进行解码显示。
若找到,则按照服务器端发过来的响应信息中指定的编码进行解码显示。
若找不到,则按照浏览器端,(2.3)自己默认的编码格式进行解码显示。

2 服务器端和浏览器端编码设置 

服务器端的编码,两种方式设置服务器编码字符数据的编码方式。
(1) response.setContentType("text/html;charset=utf-8");(推荐使用)
(2) response.setCharacterEncoding("utf-8");
  
浏览器端的解码,发送之前你需要设置响应体的 mime 类型,如何设置 ?
(即浏览器要找的解码格式)两种设置方法。
(1)设置在响应头中 response.setContentType("text/html;charset=utf-8");(推荐使用)
(2)在响应体中设置

<meta http-equiv=\"Content-Type\" content=\"text/html; charset=UTF-8\"> 

3 推荐方法   

  response.setContentType("text/html;charset=utf-8");
  设置 mime 类型,同时设置数据的编码方式,对服务器和客户端都有效。
  
  响应体数据要使用流的形式进行发送   
  两种流的形式:
  (1)字节流 OutputStream out = response.getOutputStream();(任意类型)
  (2)字符流 PrintWriter writer = response.getWriter();(一般的字符)

4 代码示例

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

public class ServeAndClientEecodeAndDncodeServlet extends HttpServlet
{
	
	public void doGet(HttpServletRequest request, HttpServletResponse response)
			throws ServletException, IOException
	{
		response.setContentType("text/html;charset=utf-8");// 设置 mime 类型,同时设置数据的编码方式,对服务器和客户端都有效!

		// 响应要使用流的形式发送
		// 1 使用字节流形式发送
		// response.getOutputStream().write("使用字节流的形式发送!".getBytes("utf-8"));//字节流,字符串转换为字节流,是要指定编码的。

		// 2 使用字符流形式发送
		response.getWriter().write("使用字符流的形式发送!");

	}

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

}

  • 1
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不甩锅的码农

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值