广州app开发:Ajax传输中文兼容性问题的解决方案

分类:技术文章 | 2015-12-03 10:36:49

使用ajax时,采用get传值,如果url中含有中文,我们可以发现在火狐和IE下服务器端获得的值是不一样的。因为火狐采用的是utf8编码传值,而IE采用的gb2312编码传值的。解决这个兼容性问题,我总结了两个方案,具体如下:

方案1:客户端处理。对中文进行编码。

HTML代码:

PHP代码:

<?php

$name =urldecode($_GET['name']);

echo $name;// 输出"小明"

?>

方案2:服务器端处理。判断字符编码,进行转码。

HTML代码:

PHP代码:

<?php

// 函数判断是否是utf8编码

functionis_utf8($string) {

    return preg_match('%^(?:

        [\x09\x0A\x0D\x20-\x7E]                  

        | [\xC2-\xDF][\x80-\xBF]            

        | \xE0[\xA0-\xBF][\x80-\xBF]      

        | [\xE1-\xEC\xEE\xEF][\x80-\xBF]{2}

        | \xED[\x80-\x9F][\x80-\xBF]      

        | \xF0[\x90-\xBF][\x80-\xBF]{2}   

        | [\xF1-\xF3][\x80-\xBF]{3}         

        | \xF4[\x80-\x8F][\x80-\xBF]{2} )*$%xs', $string); 

}

$name =$_GET['name'];

if(!is_utf8($name)){

    $name = iconv("gb2312","utf8", $name);

}

当然,以上情况都是基于服务器端的编码是utf8的情况下的。

 

业务咨询请拨打服务热线

020-38894803


点击这里给我发消息