J2EE ajax中文乱码解决

        前几天在关于java web 开发中遇到的表单提交、ajax提交的乱码问题,纠结死了,找了下资料,终于发现解决方法,总结了一下,方便日后查找。

        1、html表单提交,在<input id="username" type="text" name="username" />文本框中输入中文提交到Servlet或JSP处理,即使对HttpServletRequest中的方法进行了设置req.setCharacterEncoding("gb2312");也不能解决中文乱码问题,但是英文则不会出现乱码,解决方法是用String的构造方法public String(byte bytes[], Charset charset),如:
        1)表单提交:
                              
<input class="zctext" id="username" type="text" name="username" /> 

        2)Servlet处理:
                              
String username = request.getParameter("username");  //得到参数
username = new String(username.getBytes("iso-8859-1"),"GB2312");//转换中文字符,gb2312编码!!

        这样就能显示中文,就可以对数据库进行进一步连接,否在乱码是不可能在数据库中有查询结果的。
        2、ajax提交Servlet处理。用jquery与用原生的javascript进行提交方式都差不多,对于提交中文则要进行编码解码,英文则木有问题。同上,即便用了HttpServletRequest中的方法进行了设置req.setCharacterEncoding("gb2312");也不能解决中文乱码,要进行编码 与解码,分别是javascript中的encodeURI($("#username").attr("value"))编码,和java中的public static  String  decode( String s,  String enc)解码。
        1)ajax提交代码:
$.ajax({
            type:"POST",
            url:"jqcheck?do=login",//提交到URL映射为jqcheck的servlet处理
            data:{username:encodeURI($("#username").attr("value")),password:$("#password").attr("value")},
            success:function(data){
              if(data==2){
                alert("密码错误");
              }else if(data==3){
                alert("用户名不存在");
              }else {
                alert("登录成功哦!!");
              }
            }
          })

        主要是要对文本框的数据进行编码,对于<input class="zctext" id="username" type="text" name="username" /> 中的数据进行编码,先取得id为username的文本框的值,在进行编码encodeURI($("#username").attr("value"))。
        2)jqcheck的servlet处理代码:
                   
 String username = req.getParameter("username");//得到参数
 username = java.net.URLDecoder.decode(username, "UTF-8");///对ajax进行URLdecode解码

        这样就可以了。。
  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值