有关PHP中的Ajax乱码问题

AJAX的乱码的主要原因:

由于XMLHTTP采用的是Unicode编码

而一般页面采用的是gb2312

而当在获取页面时的XMLHttp返回的是utf-8编码

这就造成了显示产生乱码。

基本的解决办法有以下几种:

方法一:

在PHP文件中显示声明为GB2312
header("Content-Type:text/html;charset=GB2312");
而对于发送到服务器的中文进行转码。
$_POST["content"]=iconv("UTF-8","gb2312",$_POST["content"]);

方法二:

在PHP的处理页面上
header("Content-Type:text/html;charset=GB2312");

方法三:

对网站和数据库进行统一的编码,这样一般就不会出现类似的问题。

特殊情况:

以上出现原因,各个帖子中都有体现,不过楼主曾经出现在测试过以上的问题以后,还会出现的乱码情况,经过一番测试,发现URL中回传多值的时候依然可能会出现乱码。。

解决方案:

将中文值使用特殊字符连接后,一次性传入,并控制器端再分割,虽然比较麻烦,但是效果很好。PS:Ajax回传多值的时候,不使用XML依然可以使用这种方案。

example:

VIEW:

var url="<?php echo base_url()?>"+"manage/datainfo/abc";
url=url+"?manaStdd="+materialName+"|"+standard
url=url+"&sid="+Math.random()
alert(url)
xmlHttp.onreadystatechange=stateChanged
xmlHttp.open("GET",url,true)
xmlHttp.send(null)

CONTROLLER:

$manaStdd = explode("|",$_GET['mana']);
$mana = $manaStdd[0];
$stdd = $manaStdd[1];

这样简单的处理下就可以了。

 

 

posted @ 2013-08-01 10:17  cloudsai  阅读(203)  评论(0)    收藏  举报