【Servlet笔记】两种输出流以及乱码问题

    学过Java SE的应该清楚Java中得IO流有以下几个:

    字符流:Writer 和 Reader; 字节流:OutputStream 和 InputStream

    当然Servlet向浏览器输出数据也就有两种方式了。

    字节流方式:

    OutputStream out = response.getOutputStream();
    out.write("Hello, world!".getBytes());

    字符流方式:

    PrintWriter out = response.getWriter();
    out.println("Hello, world!");

    引起乱码的原因主要是:浏览器的解码和数据的编码不一致。由于 jar 包得源代码是外国人写的,默认编码一般是 ISO-9881. 并且这种编码方式没有中文的编码,中文在编码为问号的编码。因此,只要 response 的编码格式和浏览器的解析格式相同,则不会产生乱码。两种方式的解决编码问题的方法:    

    字节流方式的解决方法:

    OutputStream out = response.getOutputStream();
    out.write("Hello, world!".getBytes("utf-8"));   //在这里指定编码成字节码的编码方式
    response.setContentType("text/html;utf-8");
 
 

    字符流的解决方式:

    response.setCharacterEncoding("utf-8");   //在这里设置编码方式
    PrintWriter out = response.getWriter();
    out.println("Hello, world!");
    response.setContentType("text/html;utf-8");
 
 
 







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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值