凌晨00:00_Response乱码解决

Request & Response
    Web服务器收到客户端的http请求,会针对每一次请求,分别创建一个用于代表

请求的request对象、和代表响应的response对象。
    获取客户机提交过来的数据---->>>request对象
    要向客户机输出数据---------->>>response对象

HttpServletResponse
    HttpServletResponse对象服务器的响应。
HTTP协议:
    状态行
    响应头
    实体内容

看到HttpServletResponse对象 响应 那么一定有提供关于响应的服务
状态码、响应头、实体数据的方法。
    setStatus(int sc)
    setHeader(java.lang.String name,java.lang.String value)
    getWriter()
    getOutputStream()


首先我们要浏览HTTP响应的列表
HTTP/1.1 200 OK----------------------------->状态行用于描述服务器对请求的处理

结果。
Server:Microsoft-IIS/5.0-------------------->  消息头用于描述服务器的基本信息

,以及
Date:Thu,13 Jul 2000 05:46:53 GMT----------->数据的描述,服务器通过这些数据的

描述信
Content-Length:2291------------------------->息,可以通知客户端如何处理等一会

儿它回
Content-Type:text/html---------------------->送的数据。
Cache-control:private----------------------->代表服务器向客户端回送的数据。


响应头和请求头是可以同存在多个同名的。

案例一:向浏览器输出一段数据。
方法一:用getOutputStream()获得一个ServletOutputStream字节流输出数据
此方法按字节输出数据,如果输出的数据是表示一段字段的字节数据,则一定
要只i的那个浏览器以什么码表解码,如果指定错吗表就会有乱码问题,浏览器
默认用平台码表打开。
    resposne.setHeader("content-type","text/html;charset=utf-8");
多学一点:可以在html中用
    <meta http-equiv="" content=""> 来模拟响应头信息

方法二:用getWriter()获得一个PrintWriter字符输出数据。
    response会默认以 ISO8859-1将需要输出到浏览器的字符进行解码,如果
输出的字符在ISO8859-1中不存在,就会导致乱码问题。

明确指定utf-8码表,


response.getOutputStream().write("中国".getBytes("utf-8"));
//你可以设置浏览器的头,让浏览器以utf-8进行查看
response.setHeader("Content-Type","text/html;charset=utf-8");


服务器WEB
    response.getWriter().write("北京");
    
    "北京".getByte("iso8859-1");
    ?0100--
    ?0100--

客户端
    无论采用什么编码格式查看都是编码


解决方案:
    response.setCharacterEncoding("gbk");//告诉服务器采用gbk格式进行编码


你可能回想如果用户不采用gbk格式查看呢?
那么采用万无一失的方案:
    response.setCharacterEncoding("utf-8");
    response.setHeader("Content-Type","text/html;charset=utf-8");

--->以上两行代码效果等同于--》
    response.setContentType("text/html;charset=utf-8");
    response.getWriter().write("北京");



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值