解决方案 »

  1.   

    header('Content-type: text/html;charset=GBK');$s = '中文';
    echo strlen($s); //4
    echo mb_strlen($s); //4 没有字符集声明
    echo mb_strlen($s, 'gbk'); //2
    echo mb_strlen($s, 'utf-8'); //2 这是不准确的$s = mb_convert_encoding($s, 'utf-8', 'gbk');
    echo strlen($s); //6
    echo mb_strlen($s); //6 没有字符集声明
    echo mb_strlen($s, 'gbk'); //3 这是不准确的
    echo mb_strlen($s, 'utf-8'); //2
      

  2.   

    那我请教一个上面的问题 utf8下
    $s = '中文';
    echo mb_strlen($s, 'gbk'); //3 这是不准确的
    这种情况是怎么回事?
      

  3.   

    utf-8 的 中文 占 6 个字节
    如果你当做 gbk 解释,就算作 3 个字符了
    你认为是正确的吗?建议你不要在这个上面浪费精力,只要记住:永远只使用一个字符集
      

  4.   

    问题二:
    否,两种情况都应得到字符数,但是基于编码不同,得到的结果也会不同。你只要记得字符集要统一就不会有问题了。
    PHP文件是utf8情况下
    $s = '中文';
    echo mb_strlen($s, 'utf-8');  // 2