zoukankan      html  css  js  c++  java
  • 注意语句顺序 防止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("汉字");

        }

     

  • 相关阅读:
    [ZZ]为什么选择傲游
    重新启用ClustrMaps记数
    Ubuntu 10.4的wubi安装BUG修正了
    [转载]关于C++,我觉得好的设计法则
    迅雷5.9.19.1390会员破解与快车旋风专用链补丁
    VS2010 Ultimate英文版下载
    不会“思维”只会“批判”,谨防网络舆论“怨妇化”
    游戏制作人(调侃)
    Visual Studio 2010 Beta安装感受
    msdev & devenv 的命令行用法
  • 原文地址:https://www.cnblogs.com/oyjj/p/2132941.html
Copyright © 2011-2022 走看看