使用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