prototype.js这个文件我就不上传了,
conn.asp文件如下
<%
artmdb="db.mdb"
set conn=server.CreateObject("adodb.connection")
DBPath = Server.MapPath(artmdb)
conn.open "provider=microsoft.jet.oledb.4.0; data source="&DBpath
%>
a.asp文件如下:
<!--#include file="conn.asp"-->
<script src=prototype.js></script>
<html>
<head>
<meta http-equiv="Content-Language" content="zh-cn">
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
<title></title>
</head>
<body>
<script>
function modify(tar,id){
if(window.event.srcElement!=tar){
return(true);
};
var o = document.createElement("input");
var str = tar.innerHTML;
tar.innerHTML = "";
o.name = "v";
o.type = "text";
o.value = str;
o.onblur = function(){
saveit(this.value, this,id)
};
o.onDblClick = function(){
window.document.readyState != null;
};
o.onClick = function(){
return false;
};
tar.appendChild(o);
o.select();
}
function saveit(value, tar,id){
var url="save.asp"
var xmlhttp=new Ajax.Updater('result',url,{
method:"post",
asynchronous:false,
parameters:"rand="+Math.random()+"&id="+id+"&db="+value
});
tar.parentNode.innerHTML = value;
}
</script>
<table border="1" width="400" id="table1">
<tr>
<td width=200>姓名</td>
<td width=200>性别</td>
</tr>
<%
set rs=conn.execute("select top 2 * from users")
do while not rs.eof
%>
<tr>
<td onclick=modify(this,<%=rs("id")%>)><%=rs("name")%> </td>
<td onclick=modify(this,<%=rs("id")%>)><%=rs("sex")%> </td>
</tr>
<%
rs.movenext
loop
%>
</table>
<div id="result">结果: </div>
</body>
</html>
save.asp文件如下 :
<!--#include file="conn.asp"-->
<%
Response.charset = "gb2312"
'response.write request("id")+request("db")
conn.execute("update users set name='"&request("db")&"' where id="&request("id"))
%>
16 个解决方案
#1
<script src=prototype.js></script>
如果不用框架就没有问题。怎么会这样呢,现在都在用框架吧,怎么解决上面的问题呀。
#2
怎么没人回答,改prototype文件中的encoding为GB2313也不行啊.
#3
参数传递的时候用encodeURI 进行编码
encodeURI(参数)
encodeURI(参数)
#4
我试过了,不行啊。
#5
其实 我这段代码很简单,就少了一个prototype.js文件和一个数据库表,动手建一个,把我代码保存测试一下吧,急用啊。
#6
产生原因
主要有2个原因
1 xtmlhttp 返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码
2 post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码
解决方法
进一步整理中
推荐方法,前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码.
前台更改为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
后台asp中第一行加入如下代码
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="utf-8"; %>
<% Session.CodePage=65001; %>
后台如果有html代码也需保证
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
补救的方法是进行编码转换.可以在客户端也可以在服务器端进行编码转换.优点是没有任何限制,缺点效率低.
可参考本站的WEB代理(ASP版),这里是服务端的asp编码,由于脚本语言是javascript,所以直接复制到客户端也可以使用!
补充
如果是老系统升级ajax,如果系统是gb2312的话,也无需大修改
新建立一个ajax的后台页面编码是utf-8,前台可以为任意编码,后台页面负责添加数据库,可保证存入数据库后无乱码
上面的方法也不行,我的是前台用javascript 传递参数, 后台是用asp接收参数。如果前台加编码,后台怎么解码。
主要有2个原因
1 xtmlhttp 返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码
2 post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码
解决方法
进一步整理中
推荐方法,前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码.
前台更改为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
后台asp中第一行加入如下代码
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="utf-8"; %>
<% Session.CodePage=65001; %>
后台如果有html代码也需保证
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
补救的方法是进行编码转换.可以在客户端也可以在服务器端进行编码转换.优点是没有任何限制,缺点效率低.
可参考本站的WEB代理(ASP版),这里是服务端的asp编码,由于脚本语言是javascript,所以直接复制到客户端也可以使用!
补充
如果是老系统升级ajax,如果系统是gb2312的话,也无需大修改
新建立一个ajax的后台页面编码是utf-8,前台可以为任意编码,后台页面负责添加数据库,可保证存入数据库后无乱码
上面的方法也不行,我的是前台用javascript 传递参数, 后台是用asp接收参数。如果前台加编码,后台怎么解码。
#7
这是因为编码不统一的原因,文件编码,输出编码,网页编码这3者要统一。
一般情况下,文件编码都是ANSI格式(支持gb2312),而不是utf-8格式。
你用的是gb2312编码,不需要改成utf-8(当然改成utf-8也可以实现),那么可以这样处理:
<Quote>
1、确保所有文件的编码是ANSI格式
2、输出编码为gb2312
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<% Response.Charset="gb2312"; %>
<% Session.CodePage=936; %>
3、网页编码为
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</Quote>
如果你要改成utf-8,方法相同,只是编码不同:
<Quote>
1、确保所有文件的编码是UTF-8格式
2、输出编码为UTF-8
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="UTF-8"; %>
<% Session.CodePage=65001; %>
3、网页编码为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</Quote>
一般情况下,文件编码都是ANSI格式(支持gb2312),而不是utf-8格式。
你用的是gb2312编码,不需要改成utf-8(当然改成utf-8也可以实现),那么可以这样处理:
<Quote>
1、确保所有文件的编码是ANSI格式
2、输出编码为gb2312
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<% Response.Charset="gb2312"; %>
<% Session.CodePage=936; %>
3、网页编码为
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</Quote>
如果你要改成utf-8,方法相同,只是编码不同:
<Quote>
1、确保所有文件的编码是UTF-8格式
2、输出编码为UTF-8
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="UTF-8"; %>
<% Session.CodePage=65001; %>
3、网页编码为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</Quote>
#8
前台charset改成utf8时,文件保存格式也要改成utf-8格式。
#9
能针对我的代码来一个能用的,就能实现我的代码的方法吗、?
#10
就是针对你的代码写的,详细方法看我在7楼的回复。
#11
是这样吗
把save.asp文件改为这样吗,怎么还是不行。
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<% Response.Charset="gb2312"; %>
<% Session.CodePage=936; %>
<!--#include file="conn.asp"-->
<%
'Response.charset = "utf-8"
response.write request("id")+request("name")
conn.execute("update users set name='"&request("name")&"' where id="&request("id"))
%>
#12
晕,一定要看我写的第一句:
文件编码,输出编码,网页编码这3者要统一
我已经给你写出了2中编码的相关代码,第一个是gb2312的,第二个是utf-8的,不能混在一起
我已经给你写出了2中编码的相关代码,第一个是gb2312的,第二个是utf-8的,不能混在一起
#13
peacock ,我所有的页面都是gb2312的,不是全改成了gb2312了吗,怎么还不行啊,我就是照你的做的啊,你看看还有那个地方要改。
一共就两个页,这不都是gb2312,输出是正常,可写到数据库就成了乱码
一共就两个页,这不都是gb2312,输出是正常,可写到数据库就成了乱码
#14
已经可以肯定是编码的问题了,一定要检查3者是否统一,你可以全部换成utf-8再试试
#15
看来不好解决,还是不用框架了,用老办法,没有问题。
#16
我还是没懂,什么时候是解码,什么时候是编码呢
#1
<script src=prototype.js></script>
如果不用框架就没有问题。怎么会这样呢,现在都在用框架吧,怎么解决上面的问题呀。
#2
怎么没人回答,改prototype文件中的encoding为GB2313也不行啊.
#3
参数传递的时候用encodeURI 进行编码
encodeURI(参数)
encodeURI(参数)
#4
我试过了,不行啊。
#5
其实 我这段代码很简单,就少了一个prototype.js文件和一个数据库表,动手建一个,把我代码保存测试一下吧,急用啊。
#6
产生原因
主要有2个原因
1 xtmlhttp 返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码
2 post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码
解决方法
进一步整理中
推荐方法,前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码.
前台更改为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
后台asp中第一行加入如下代码
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="utf-8"; %>
<% Session.CodePage=65001; %>
后台如果有html代码也需保证
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
补救的方法是进行编码转换.可以在客户端也可以在服务器端进行编码转换.优点是没有任何限制,缺点效率低.
可参考本站的WEB代理(ASP版),这里是服务端的asp编码,由于脚本语言是javascript,所以直接复制到客户端也可以使用!
补充
如果是老系统升级ajax,如果系统是gb2312的话,也无需大修改
新建立一个ajax的后台页面编码是utf-8,前台可以为任意编码,后台页面负责添加数据库,可保证存入数据库后无乱码
上面的方法也不行,我的是前台用javascript 传递参数, 后台是用asp接收参数。如果前台加编码,后台怎么解码。
主要有2个原因
1 xtmlhttp 返回的数据默认的字符编码是utf-8,如果前台页面是gb2312或者其它编码数据就会产生乱码
2 post方法提交数据默认的字符编码是utf-8,如果后台是gb2312或其他编码数据就会产生乱码
解决方法
进一步整理中
推荐方法,前台后台都用utf-8编码,这样可以省不少麻烦,从根本上解决了乱码问题.优点是效率高,而且符合目前的形式,utf-8编码本身就是一种比较优秀的编码,没有语言限制.缺点只能调用自己的后台编码或者其他的utf-8的编码.
前台更改为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
后台asp中第一行加入如下代码
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="utf-8"; %>
<% Session.CodePage=65001; %>
后台如果有html代码也需保证
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
补救的方法是进行编码转换.可以在客户端也可以在服务器端进行编码转换.优点是没有任何限制,缺点效率低.
可参考本站的WEB代理(ASP版),这里是服务端的asp编码,由于脚本语言是javascript,所以直接复制到客户端也可以使用!
补充
如果是老系统升级ajax,如果系统是gb2312的话,也无需大修改
新建立一个ajax的后台页面编码是utf-8,前台可以为任意编码,后台页面负责添加数据库,可保证存入数据库后无乱码
上面的方法也不行,我的是前台用javascript 传递参数, 后台是用asp接收参数。如果前台加编码,后台怎么解码。
#7
这是因为编码不统一的原因,文件编码,输出编码,网页编码这3者要统一。
一般情况下,文件编码都是ANSI格式(支持gb2312),而不是utf-8格式。
你用的是gb2312编码,不需要改成utf-8(当然改成utf-8也可以实现),那么可以这样处理:
<Quote>
1、确保所有文件的编码是ANSI格式
2、输出编码为gb2312
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<% Response.Charset="gb2312"; %>
<% Session.CodePage=936; %>
3、网页编码为
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</Quote>
如果你要改成utf-8,方法相同,只是编码不同:
<Quote>
1、确保所有文件的编码是UTF-8格式
2、输出编码为UTF-8
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="UTF-8"; %>
<% Session.CodePage=65001; %>
3、网页编码为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</Quote>
一般情况下,文件编码都是ANSI格式(支持gb2312),而不是utf-8格式。
你用的是gb2312编码,不需要改成utf-8(当然改成utf-8也可以实现),那么可以这样处理:
<Quote>
1、确保所有文件的编码是ANSI格式
2、输出编码为gb2312
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<% Response.Charset="gb2312"; %>
<% Session.CodePage=936; %>
3、网页编码为
<meta http-equiv="Content-Type" content="text/html; charset=gb2312">
</Quote>
如果你要改成utf-8,方法相同,只是编码不同:
<Quote>
1、确保所有文件的编码是UTF-8格式
2、输出编码为UTF-8
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="65001"%>
<% Response.Charset="UTF-8"; %>
<% Session.CodePage=65001; %>
3、网页编码为
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</Quote>
#8
前台charset改成utf8时,文件保存格式也要改成utf-8格式。
#9
能针对我的代码来一个能用的,就能实现我的代码的方法吗、?
#10
就是针对你的代码写的,详细方法看我在7楼的回复。
#11
是这样吗
把save.asp文件改为这样吗,怎么还是不行。
<%@LANGUAGE="JAVASCRIPT" CODEPAGE="936"%>
<% Response.Charset="gb2312"; %>
<% Session.CodePage=936; %>
<!--#include file="conn.asp"-->
<%
'Response.charset = "utf-8"
response.write request("id")+request("name")
conn.execute("update users set name='"&request("name")&"' where id="&request("id"))
%>
#12
晕,一定要看我写的第一句:
文件编码,输出编码,网页编码这3者要统一
我已经给你写出了2中编码的相关代码,第一个是gb2312的,第二个是utf-8的,不能混在一起
我已经给你写出了2中编码的相关代码,第一个是gb2312的,第二个是utf-8的,不能混在一起
#13
peacock ,我所有的页面都是gb2312的,不是全改成了gb2312了吗,怎么还不行啊,我就是照你的做的啊,你看看还有那个地方要改。
一共就两个页,这不都是gb2312,输出是正常,可写到数据库就成了乱码
一共就两个页,这不都是gb2312,输出是正常,可写到数据库就成了乱码
#14
已经可以肯定是编码的问题了,一定要检查3者是否统一,你可以全部换成utf-8再试试
#15
看来不好解决,还是不用框架了,用老办法,没有问题。
#16
我还是没懂,什么时候是解码,什么时候是编码呢