100分问题,关于utf-8编码中汉字的问题
如题,想精确截取utf-8编码中指定长度的中英文字符串,但好像该编码中汉字和英文的长度都一样为1,如何判断utf-8编码中的某字符是汉字?
------解决方案--------------------有一定范围的。。。至于是多少就不知道了。
------解决方案--------------------帮顶一下学习
------解决方案--------------------up.
------解决方案--------------------utf-8为1-3字节编码,其中ascii兼容字符为1个字节,其他字符为2-3个字节。   
 简体中文为3个字节,表示为1110aaaa-10bbbbbb-10cccccc,其中的aaaabbbbbbcccccc组合起来就是改编码的unicode形式   
 对于字符统计,可以用midb读取,然后判断起首位是否为零,为零则是英文字符。假设英文字符总数为AsciiCount,则汉字字符为(lenb-AsciiCount)/3
------解决方案--------------------http://community.csdn.net/Expert/topic/5354/5354620.xml?temp=.2699243   
 function cut_str($sourcestr,$cutlength)  
 {  
    $returnstr= ' ';  
    $i=0;  
    $n=0;  
    $str_length=strlen($sourcestr);//字符串的字节数  
    while (($n <$cutlength) and ($i <=$str_length))  
    {  
       $temp_str=substr($sourcestr,$i,1);  
       $ascnum=Ord($temp_str);//得到字符串中第$i位字符的ascii码  
       if ($ascnum> =224)    //如果ASCII位高与224, 
       {  
          $returnstr=$returnstr.substr($sourcestr,$i,3); //根据UTF-8编码规范,将3个连续的字符计为单个字符          
          $i=$i+3;            //实际Byte计为3 
          $n++;            //字串长度计1 
       } 
       elseif ($ascnum> =192) //如果ASCII位高与192, 
       {  
          $returnstr=$returnstr.substr($sourcestr,$i,2); //根据UTF-8编码规范,将2个连续的字符计为单个字符  
          $i=$i+2;            //实际Byte计为2 
          $n++;            //字串长度计1 
       } 
       elseif ($ascnum> =65 && $ascnum <=90) //如果是大写字母, 
       {  
          $returnstr=$returnstr.substr($sourcestr,$i,1);  
          $i=$i+1;            //实际的Byte数仍计1个 
          $n++;            //但考虑整体美观,大写字母计成一个高位字符 
       } 
       else                //其他情况下,包括小写字母和半角标点符号, 
       {  
          $returnstr=$returnstr.substr($sourcestr,$i,1);  
          $i=$i+1;            //实际的Byte数计1个 
          $n=$n+0.5;        //小写字母和半角标点等与半个高位字符宽... 
       }  
    }  
          if ($str_length> $cutlength){ 
           $returnstr = $returnstr .  "... ";//超过长度时在尾处加上省略号 
       } 
     return $returnstr;    
 }     
 网上找到的.我用过不错,我编程都是UTF8的
------解决方案--------------------mark
------解决方案--------------------喔,不错啊,编程都用UTF8。我一直都还在用GB2312
------解决方案--------------------推荐搂主: 
 http://www.regexlab.com/zh/encoding.htm   
 搂主所说的  "汉字和英文的长度都一样为1 " 实际上是 asp 的内部码,就是  "UnicodeLittle 编码 ",不是 utf8 编码。