注册 登录
编程论坛 ASP技术论坛

ajax发送特殊字符的问题

lele2007 发布于 2011-01-10 10:41, 1132 次点击
用ajax的post提交数据时,包含的一些特殊符号。。   +  = - @ #$%^&** 等等。。  +号提交上去后,程序里接收不到真实的+号的会是一个空格。。
整站页面编码是gb2312的。。用encodeURIComponent测试了可以提交成功。。但是这个好像页面要统一是utf-8中文才不会乱码。。同时这个编码时间也比较长。。我在gb2312编码页面里使用escape编码的。。+号不编码。。
保持编码不变有什么解决办法啊。。?
5 回复
#2
lele20072011-01-12 12:38
请问,大家是怎么处理ajax提交数据的啊?
#3
gupiao1752011-01-12 16:47
gb2312里用encodeURIComponent,请问是否在后台也进行了GB2312的申明没?全部要申明,前端和后台页面都要申明,具体在百度上找一下!

不过我还是推荐使用UTF-8编码,文件本身也要保持这种编码,这样的话代码修改得少!编码风格一致,不会出现乱码!尤其是在以后做WEBSERVER的时候,进行JSON或XML编码的时候能减少不少问题。
#4
lele20072011-01-12 17:15
后台文件编码也是gb2312的。。加了防缓存和  这个也加上了: response.charset = "gb2312"。。是不是指这个声明?
加了后这个用encodeURIComponent还会乱码。
encodeURIComponent  这个编码花费的时间比escape要长好多哟。。我刚在utf-8测试了中文不乱码。。现在整站是gb2312的呃。。

版主,你平时用ajax发送数据时。。页面也全部是utf-8的编码也是使用encodeURIComponent它来编码的吗?
#5
gupiao1752011-01-13 16:06
如果用gb2312编码,在ASP页里好象还要加一个session.codepage="936",具体我也忘记了。多测试看看,gb2312的应该也能休整为不乱码,但是就是比UTF-8麻烦!

如果你用了gb2312,那么文件本身必须是ANSI的,如果用了UTF8编码,那么文件编码就必须是UTF-8的,如果搞错了,或者颠倒了任何一个,都必定乱码!
#6
lele20072011-01-14 12:10
。。明白了。。我用记事本看了全是gb2312  ANSI的。谢谢版主。。。
function addEscape(info){return escape(info.replace(/\+/gim,"+"));}
我把 + 号替换成十进制再编码终于暂时可以接收了。。
1