您的位置:首页 > 产品设计 > UI/UE

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

2017-04-29 08:20 239 查看
  
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("汉字");
    }
 

 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: