Ajax中文问题

       老问题,Ajax中文问题解决办法:

       首先,页面编码采用gb2312,这是我们一般常用的编码方式,而通过js发送的异步请求则都是采用UTF-8的编码,因此注意js端的encode和服务端的解码。

        先看看js的几种编码和解码的方法吧:

        encode(),decode();对URI进行编码,但不对‘/’,‘#’,‘+’等字符进行编码;

        encodeURIComponent(),decodeURIComponent(),对大部分字符进行编码。(除了哪些忘了,具体见javascript权威指南)。

         escape()和unescape()这种编码方式发送请求时会报一个不合法的编码的错误(ie6下面)。

        代码如下:

            var student = '小明 ++ ##  // 测试中文'

            function code(str){
                return encodeURIComponent(str);
            }

            function decode_my(str){
                return decodeURIComponent(str);
            }

            function URI(str){
                return encodeURI(str)
            }
            function deURI(str){
                return decodeURI(str)
            }
            function ex(str){
	return escape(str)
            }
             function deex(str){
	return unescape(str)
            }
             alert(code(a));
             alert(decode_my(a))
             alert(URI(a))
             alert(deURI(a))
             alert(code(ex(a)))
             alert(decode_my(deex(a)))

 

    有了这个例子,可以很明白的了解这些方法的用途,再配合prototype来写个Ajax:

   

                var url = 'b.jsp'

                var ajax = new Ajax.Request(url,{
	       method:'post',
	       parameters:'name='+code(a),
		       onSuccess:function(req){
	       	       alert(req);
			var res = req.responseText;
			alert(res);
			document.writeln(res);
	},
		        onFailure:function(){
			alert(123);
	}
                });

 

    发送到后台如何解析呢?

    不废话,代码如下:

                request.setCharacterEncoding("utf-8");
	
                        String name = request.getParameter("name");
	
                        response.getWriter().write(name);

     这样就可以得到正确的中文了,在tomcat5.5下测试过。还有很多的问题如:设置respon的header信息等再次不赘   述了。

        

       

 

                                                     

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值