有关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];
这样简单的处理下就可以了。

浙公网安备 33010602011771号