Response中文乱码问题

 

中文乱码问题

Servlet中是通过Service方法的参数传递每次请求的request对象和response对象

request -->HttpServletRequest 封装了所有的请求信息

response---->HttpServletResponse对象  封装了所有的相应操作

  每一次请求都会创建 其以上两个对象

在DemoServlet的doGet方法中出现乱码的步骤如下:

//对象response

       //PrintWriter out字符流对象 默认的编码方式那么在java中Unicode编码

       //out response.getWriter();方法获取的 response对象ISO8895-1的编码方式

       PrintWriter out = response.getWriter();

       String data = "中国";//UTF-8 GB2312 中国就是字符串

       //按照平台的默认字符编码将字符串的字符转化为字节,并完全以write(int)方法的方式写入这些字节

       out.println(data);

浏览器输出的“??” 而不是“中国”

       //总结

       /*1、serlvet程序输出给浏览器的内容,不是任何一种正确的中文字符集编码 是ISO8859-1

        *2、浏览器浏览网页文档是所采用的字符集编码与它收到的中文字符本身的字符编码不一致。

     * */

 

 

那么如何去避免这个问题呢?

步骤如下:

//response对象 因为getbytes获取的是gb2312的数据 而浏览器默认以gb2312打开

       //response.setHeader("Content-Type", "text/html; charset=UTF-8");

      response.getOutputStream().write("<meta http-equiv=\"content-type\" content=\"text/html; charset=UTF-8\">".getBytes());

       response.getOutputStream().write("中国".getBytes("UTF-8"));

    response.getOutputStream().write((98+"").getBytes());

 

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值