jsp乱码的处理

来源:互联网 发布:cpu散热器 知乎 编辑:程序博客网 时间:2024/05/21 12:44

乱码

获取客户端的乱码

我们利用ajax进行传值时,或者利用a标签传值时,就会出现乱码,因为如果用Tomcat的话,Tomcat内部会将值转化为ISO-8859-1格式的,而我们的浏览器使utf-8格式的,因而,当输入和输出的格式不一致时,就会出现乱码,那么,我们怎么修正乱码呢?

比如以下代码片:

private void checkBookName(HttpServletRequest req, HttpServletResponse resp) {    try {        String[] bookNames = TrimString.trimStr(new String(req.getParameter("bname").getBytes("ISO-8859-1"), "UTF-8"));        boolean hasBookName = BookDeleteService.hasBookNames(bookNames[0]);        PrintWriter out = resp.getWriter();        if (hasBookName) {            List<Object> bookIds = BookDeleteService.getBookIds(bookNames[0]);            out.write(new ObjectMapper().writeValueAsString(bookIds));            } else {                out.println("<script>window.alert('没有这本书')</script>");            }        } catch (Exception e) {            e.printStackTrace();        }    }
我们将传过来的值转化成ISO-8859-1字节,再转化为utf-8的字符,这样就可以避免乱码了。

输出到客户端的乱码

比如这段代码:

@Override    protected void doPost(HttpServletRequest req, HttpServletResponse resp) throws ServletException, IOException {        req.setCharacterEncoding("UTF-8");        resp.setCharacterEncoding("UTF-8");        String[] contentInfo=TrimString.trimStr(req.getParameter("ca_username"),req.getParameter("ca_user_phone"),req.getParameter("ca_content"));        ContactAdmin admin=new ContactAdmin(contentInfo[0],contentInfo[1],contentInfo[2]);        boolean result=ForeContactAdminService.isContactAdminInsert(admin);        PrintWriter out=resp.getWriter();        resp.setContentType("text/html; charset=utf-8");   //设置编码类型        if(result){            out.println("<script>alert('稍后会有客服人员联系您');self.close();</script>");        }else{            out.println("<script>alert('联系失败');self.close();</script>");        }    }
 因而,我们在输出前,需要将其转码,就是利用resp.setContentType("text/html; charset=utf-8"); 进行转码的。

原创粉丝点击