现在的位置: 首页 > 综合 > 正文

AJAX下Post表单(解决中文乱码问题)

2014年02月04日 ⁄ 综合 ⁄ 共 1006字 ⁄ 字号 评论关闭
AJAX下Post表单(解决中文乱码问题)
产生乱码的原因

用XMLHTTP对象Post表单的时候,是默认的用UTF-8字符来发送的。如果你的网页本来就是用的UTF-8编码的话,那么接收到的数据是正常的;如果你的网页编码是GB2312的话,问题就来了,POST过来的数据是UTF-8,而你整个站点是用GB2312来显示,那么所有的中文字符将全部变成乱码。

解决的方法

开始时候我有点偏激,一味的想改变XMLHTTP对象Post表单的发送方式,使它以GB2312来发送,完全找不到门路。后来经过论坛的朋友提醒,在后台接收数据时把编码转换,效果难道不是一样么。

后台语言如果是PHP,用 iconv( "UTF-8", "gb2312" , $_POST["post"]) 这个函数转换一下,轻松解决。至于ASP或其他后台语言的话,我并不熟悉,原理是一样的,在接收到数据后先转换编码再使用。

PS:XMLHTTP对象Post表单时,记得要增加2个表头设置^_^
var post="Apple=苹果&Banana=香蕉";
xmlObj.open ('POST',URL,true);
xmlObj.setrequestheader("content-length",post.length);
xmlObj.setrequestheader("content-type","application/x-www-form-urlencoded");
xmlObj.send (post);

Trackback: http://tb.blog.csdn.net/TrackBack.aspx?PostId=640997

[点击此处收藏本文]   发表于 2006年03月28日 10:34 AM

wewe 发表于2006-04-19 8:53 AM  IP: 219.133.6.*
听说 escape() 函数可以解决
解决方法很简单:使用javascript中的 escape(string) 函数
http_request.open("POST",url,true);
http_request.setRequestHeader('Content-Type', 'application/x-www-form-urlencoded');
http_request.send("action="+strName+"&val="+escape(val)); //val的值为中文不会产生乱码
你试一试看 

抱歉!评论已关闭.