UTF8的汉字只有两个或三个字节
UTF8和unicode并不是一回事

解决方案 »

  1.   

    UTF8编码是变长字节编码,用1~3个字节表示一个字符。
    但是Unicode中有所谓的Surrogate Pair,可能需要4个以上的字节才能表示。
      

  2.   

        Unicode符号范围 | UTF-8编码方式
             (十六进制) | (二进制)
    --------------------+---------------------------------------------
    0000 0000-0000 007F | 0xxxxxxx
    0000 0080-0000 07FF | 110xxxxx 10xxxxxx
    0000 0800-0000 FFFF | 1110xxxx 10xxxxxx 10xxxxxx
    0001 0000-0010 FFFF | 11110xxx 10xxxxxx 10xxxxxx 10xxxxxx 【占四字节部分】
      

  3.   

    for($i=0; $i<256; $i++) {
      for($j=0; $j < 256; $j++) {
        $ch = chr($i) . chr($j);
        $s = iconv('gbk', 'utf-8', $ch);
        if(strlen($s) > 3) {
          echo $ch .'<br>';
        }
      }
    }