注意语句顺序 防止Servlet Request Response乱码

  

servlet乱码一般分为Request发生乱码和Response发生乱码

对于Request发生乱码一般是由于tomcat容器的默认编码是ISO-8859-1

而Java中的编码是UTF-8的,因此可以对

 

String myparam=request.getParameter("myparam");

 

得到的参数进行编码转化

 

myparam = new String(myparam.getBytes("ISO-8859-1"),"UTF-8");

 

对于Response发生乱码是由于页面不知道发送来的数据的编码格式

一般可以使用:

response.setCharacterEncoding("utf8");

注意这一句一定要在

PrintWriter out=response.getWriter();

获得输出对象之前,否则编码的设置将不能对输出流生效,也就发生乱码了

网上有很多解决乱码的文章和方法.但很少有提到要注意这个语句顺序的

这是实验验证的结论,而且从逻辑上也是说的通的.

 

写作则能避免乱码:

       response.setCharacterEncoding("utf8");

       PrintWriter out=response.getWriter();

写作

       PrintWriter out=response.getWriter();

       response.setCharacterEncoding("utf8");

则是无效的设置,不能解决乱码.

 

 一个消除乱码的demo代码:

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

       // TODO Auto-generated method stub

       String myparam=request.getParameter("myparam");

       myparam = new String(myparam.getBytes("ISO-8859-1"),"UTF-8");

      

       response.setCharacterEncoding("utf8");

       response.setContentType("text/html");

       PrintWriter out=response.getWriter();

      

       out.write("汉字");

    }

 

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值