再谈php乱码问题

张映 发表于 2011-05-28

分类目录: php

标签:, , ,

在开博不久,写了一篇关于解决php乱码问题文章,php 解决乱码的通用方法,绝大部分乱码,这篇博文都可以解决,但是也有例外。

如果有人传参数给你,你根本不知道,传给你的参数到底是什么编码,这个时候该怎么办呢?例如:一个站用的是gbk的编码,一个站呢用的是utf8的编码,这二个站之间要相互通信,当然这个时候都知道彼此的编码就很好解决。如果不知道呢?

<?php
function exchange_code ( &$param, $in_code,$out_code)
{
    if (is_array($param)){
       foreach ($param as $key=>$val) {
           $param[$key] = mb_convert_encoding($val,$out_code,$in_code);
       }
    }else{
       $param = mb_convert_encoding($param,$out_code,$in_code);
    }
}

$param = $_REQUEST['param'];
$code = mb_detect_encoding($param);    //在这里我传是一个字符串,数组就不能这么用了
call_user_func('exchange_code', &$param,$code,'gbk');
?>

传过来的参数,用mb_detect_encoding来侦测一下它的字符集是什么,要变成什么样的字符集,转一下就行了。不过要注意,文件本身保存的字符编码是什么,以及页面输出的编码是什么等,要统一。



转载请注明
作者:海底苍鹰
地址:http://blog.51yip.com/php/1300.html

2 条评论

  1. wclssdn 留言

    如果.. 收到的是url_encode编码后的呢? 怎么判断url_encode之前是什么编码? 猜?

  2. 张映 留言

    urlencode的话,可以看的出来,%隔出来的字符串,这个时候,urldecode就可以了

留下评论

留下评论
  • (必需)
  • (必需) (will not be published)
  • (必需)   4X8=?