May
28
之从去年把sajax改了一次后,就放在那里基本上只是用来传送一些简单的操作,
前几天开始在帮我姐改她们网站的程序,想用多一些sajax这样别人上的时候更容易操作
之前因为从服务到浏览器传中文的问题,已经让我把所有程序转成utf-8的方式,
今天我尝试着用sajax传送中文到服务器,却发现成了乱码。
这个问题,我刚才开始还没有找到解决方法,因为不知道是什么原因,
检查了部分返回的数据发现原来是
if (uri.indexOf("?") == -1)
uri += "?rs=" + escape(func_name);
else
uri += "&rs=" + escape(func_name);
uri += "&rst=" + escape(sajax_target_id);
uri += "&rsrnd=" + new Date().getTime();
所有要传到服务器的数据都会经过escape()这个过滤,escape已经基本给放弃使用了,因为编码的标准已经放弃了
一般会用所encodeURI与encodeURIComponent代替,这个两函数在传送中文到了php里已经可以直接使用,不需要用函数转格式。
以下是escape,encodeURI与encodeURIComponent三个函数的不编码的字符。
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
我后选择了使用encodeURIComponent来代替escape。因为传送的时候会出现#$&@之类的字符
前几天开始在帮我姐改她们网站的程序,想用多一些sajax这样别人上的时候更容易操作
之前因为从服务到浏览器传中文的问题,已经让我把所有程序转成utf-8的方式,
今天我尝试着用sajax传送中文到服务器,却发现成了乱码。
这个问题,我刚才开始还没有找到解决方法,因为不知道是什么原因,
检查了部分返回的数据发现原来是
if (uri.indexOf("?") == -1)
uri += "?rs=" + escape(func_name);
else
uri += "&rs=" + escape(func_name);
uri += "&rst=" + escape(sajax_target_id);
uri += "&rsrnd=" + new Date().getTime();
所有要传到服务器的数据都会经过escape()这个过滤,escape已经基本给放弃使用了,因为编码的标准已经放弃了
一般会用所encodeURI与encodeURIComponent代替,这个两函数在传送中文到了php里已经可以直接使用,不需要用函数转格式。
以下是escape,encodeURI与encodeURIComponent三个函数的不编码的字符。
引用
escape不编码字符有69个:*,+,-,.,/,@,_,0-9,a-z,A-Z
encodeURI不编码字符有82个:!,#,$,&,',(,),*,+,,,-,.,/,:,;,=,?,@,_,~,0-9,a-z,A-Z
encodeURIComponent不编码字符有71个:!, ',(,),*,-,.,_,~,0-9,a-z,A-Z
我后选择了使用encodeURIComponent来代替escape。因为传送的时候会出现#$&@之类的字符