有有明显的标识 =?gb2312?B? 或者 =?utf-8? 。字符串查找就是了。由于系统的不通,注意忽略大小写。=?gb2312?B?Rn........==?=

解决方案 »

  1.   

    iconv_set_encoding("internal_encoding", "UTF-8");
    iconv_set_encoding("output_encoding", "ISO-8859-1");
    var_dump(iconv_get_encoding('all'));
    用iconv_get_encoding all可以略
    可以取得你当前用的编码
      

  2.   

    谢谢楼上的几位大哥!我目前的问题是这样的,我有一个页面,需要把上一页传过来的变量保存!但我不知道用户浏览器的编码格式,如果用户的编码格式是“utf-8"那么传过来的变量我就需要用iconv转成gb2312后再保存,如果用户的编码格式是“gb2312",那么传过来后我就不需要再用iconv来转了,所以我就要判断用户传过来的变量到底是什么编码格式,再决定是否用iconv
      

  3.   

    你统一用UTF8来处理就行吧,兼容gb2312的,并且你也不用专门去识别,Apache已经帮你转换了啊
      

  4.   

    我用IIS,请 diekiss(峯) 说的具体一点
      

  5.   

    这样判断:
    在除去半角字符后的串中,
    1、全部字节都大于0xa0,可视为gb2312编码的
    2、所有奇数字节大于等于0x81、偶数字节大于等于0x40可视为gbk编码
    3、当串中各字节按如下规律排列时可视为utf-8编码
    一个>=0xc2的字节和若干个0x80-0xbf的字节为一组以上是从编码规则上进行判断的,当相关编码转换的函数可用的时候可以通过辗转变换来判断
    思路是,当一个gb2312的字符经gb2312-utf-8转换到utf-8编码后是可以经utf-8-gb2312转换回来的
    而一个utf-8字符做同样的操作就不能回到原来的样子了
      

  6.   

    linux 下需要安装iconv模块的,php安装时同时编译上.
      

  7.   

    今天我碰到同样的问题,写了下面这个函数来解决,确实是简单了点,有些不负责任的感觉,但是效果达到了,也就先这么着呗,哈哈哈哈....function getSafeCode($value)
    {
    $value_1= $value;
    $value_2 = @iconv("utf-8","gb2312",$value_1);
    $value_3 = @iconv("gb2312","utf-8",$value_2);

    if (strlen($value_1) == strlen($value_3))
    {
    return $value_2;
    }else
    {
    return $value_1;
    }
    }