jquery+asp ajax 中文乱码问题
2020-12-13 05:28
标签:class blog c code java http 做网站的时候,因为网站最初设计的时候,没有考虑那么多, 设定了gb2312 的简体中文 作为网站编码。 作为中文用gb2312的编码属很正常的事件了,建站起来也没有什么大问题,包括自己编写JS Ajax也不会产生乱码问题 随着Jquery的流行,我也渐渐喜欢Jquery操作DOM的方法,后来把Jquery文件作为全站的公用JS库。 Jquery的Ajax也挺好用,因为作为公用的文件了,所以不必再为每个需要Ajax的页面,再写什么XMLHTTPrequest这些对象,所以就开始使用Jquery的Ajax. 使用中发现了一些问题: 第一个问题就是load,和Get方法容易缓存,就是每次输出的内容都是一样的, 这个挺好解决的,直接在请求网址后面,加上一个随机数,致使网址不一样,就不会被缓存了。 第二个问题就是乱码问题了,这个问题纠结了我挺时间。经过摸索了一阵,现想出两种方法解决,记录一下,以免忘记了 第一种方法: 把请求的页面,编码存为utf-8文件,同时服务器编码设为65001代表utf-8,最后还要在页面上输出编码也设为 utf-8,即
response.Charset="utf-8" ,这样的一至编码,即可解决乱码问题 注意,页面保存的时候一定要存为utf-8文件,不然,整个页面都会乱码! 第二种方法: 第二种方法,是修改jquery文件! 我使用的是1.3.2版本的,就以这个为例! Jquery处理ajax的最主要的一个方法就是:ajax: function( s ) {} 无论是$.load,$.get,$.post
最终都是在这个方法里面处理的,不管其它的,直接去找,为什么Jquery把我们的传递的参数都变成了utf-8编码的数据了, jquery的 ajax传递的data参数,最后会传递给param: function( a ) {}这个方法,处理, jquery param是这样写的: 可以看到 s[ s.length ] = encodeURIComponent(key) + ‘=‘ +
encodeURIComponent(value); 这句代码。 这就是乱码的原因,因为encodeURIComponent这个方法,就是把字符,按照utf-8的编码,把字符进行 URI
组件编码(大家不明白的,可以百度一下) 咱们把这改良一下,让他也可以按gb2312的进行URI编码 这是我简单的修改了一下,原理是定义一个变量,来确定他是按哪种字符编码来进行URI编码 如果是true,就按utf-8如果为fales,则按gb2312; 默认为true,按utf-8处理! 好下面进行判断! try{if(a.ParamCharset||a.ParamCharset=="gb2312"){CharsetUtf=false;}}catch(e){}; 这句代码的意思是,检测传递进来的数据 a
,是否有ParamCharset这个属性,如果有,再判断他是否等于"gb2312",如果是,再把CharsetUtf改为false; 如果没有,则不处理。 try catch这个是防止,即使数据错误也会按utf-8处理。防止万一的。 好了,写了这么多,现在调用一下试试: 按上面代码,只要我们在调用的时候,data参数里面加上一个ParamCharset:"gb2312" 这个参数,传递进去的就是gb2312 的数据了,没用传递这个参数,即传递进去一个utf-8的数据了。 第三种方法是 客户端 js escape 编码,服务器端 url 解码 http://www.cnblogs.com/choshe/articles/1809114.html jquery+asp ajax 中文乱码问题,搜素材,soscw.com jquery+asp ajax 中文乱码问题 标签:class blog c code java http 原文地址:http://www.cnblogs.com/cmblogs/p/3737340.html
"VBSCRIPT"
CODEPAGE=
"65001"
%>
response.Charset=
"utf-8"
%>
param:
function
( a ) {
var
s = [ ];
function
add( key, value ){
s[ s.length ] = encodeURIComponent(key) + ‘=‘
+ encodeURIComponent(value);
};
// If an array was passed in, assume that it is an array
// of form elements
if
( jQuery.isArray(a) || a.jquery )
// Serialize the form elements
jQuery.each( a,
function
(){
add(
this
.name,
this
.value );
});
........后面的不粘了。
var
CharsetUtf=
true
;
try
{
if
(a.ParamCharset||a.ParamCharset==
"gb2312"
){CharsetUtf=
false
;}}
catch
(e){};
function
add( key, value ){
if
(CharsetUtf)
{s[ s.length ] = encodeURIComponent(key) +
‘=‘
+ encodeURIComponent(value);}
else
{s[ s.length ] = escape(key) +
‘=‘
+ escape(value);}
};
$.post(
"/zhanHui/ajaxAsp/SearchPageZuiXin.asp"
,{sPageSize:pPageSize,page:pPage,ajaxContent:pAjaxContent,ParamCharset:
"gb2312"
}
,
function
(data){
},
"json"
);