jsp中不同提交方式的中文乱码处理方法及数据库乱码处理方法

时间:2021-04-29 06:52:44

                 最近在做一个ajax三级联动的实现,然后就遇到在中文乱码问题,不知道是哪里出了问题,因为在页面和后台都是设置编码格式为utf-8;

在表单提交的情况下就没有遇到中文乱码:

           后来发现是在ajax的提交类型上在作怪,如果是采用get提交的话,编码格式为ISO-8859-1,如果采用post提交的话编码是UTF-8;这个也是问题的所在。

           因为在jsp中对中文进行了编码的时候用的是UTF-8的编码方式,而在servlet中调用request.getParameter();方法的时候使用服务器指定的编码格式自动解码一次,所以前台编码一次后台解码一次而解码和编码的方式不用所以造成了乱码的出现。

           解决步骤:1. Post请求解决乱码问题

                                       request.setcharacterEncoding("utf-8");//设置请求编码

                   response.setcharacterEncoding("utf-8");//设置响应编码//返回页面时出现乱码时设置

                                        2.Get方式请求解决乱码问题(因为在传送的时候会把内容变成ISO-8859-1的格式类型) 因为在传送的时候会使用到很多转换,建议把转换封装成类

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

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

public class MyUtil{

                 public static String getNewString(String str) throws UnsupportedEncodingException{

        return new String(str.getBytes("ISO-8859-1"),"UTF-8");

                       }

                   }

String stuname= MyUtil.getNewString(request.getParameter("stuname"));

                 3.还可以使用 java.net.URLDecoder.decode(actionMsg, "utf-8");这个命令对字符串进行解码

                                         java.net.URLDecoder.encode(actionMsg, "utf-8");这个命令对字符串进行编码

                  4.使用MySQL数据库乱码

有时会用JDBC连接MySQL数据库,可能会出现乱码,所以要在连接之后加上如下的语句:

useUnicode=true&characterEncoding=UTF-8
这样就可以解决乱码问题了。

在编写Servlet和JSP的时候,为了避免出现乱码,最重要的就是:采用一致的编码,如果编码都一致了,肯定不会出现乱码。如果出现了乱码肯定那个地方不一致了。

        如何可以手动操作数据库可以利用数据库管理软件把编码设置成utf-8;