• 注意语句顺序 防止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("汉字");

        }

     

  • 相关阅读:
    多态
    SSM前后端分离 ssm+html+js(ajax) 这种controll层的返回值是结合或者网址
    Eclipse创建ssm项目
    在idea中创建Maven项目
    Maven的安装和配置
    IDEA修改快捷键!和一些常用的快捷键
    mysql数据库的安装和连接测试并给root用户赋密码
    ssm动态sql语句
    Java基础--JDBC
    Java基础--注解、反射
  • 原文地址:https://www.cnblogs.com/oyjj/p/2132941.html
Copyright © 2020-2023  润新知