请教一个一个字符串长度问题.
我用PHP+MYSQL编程.MYSQL用的字符编码是UTF8.PHP的页面也是UTF8$chr = "个";
echo strlen($str);打印出来的结果是3.UTF听说占用的长度是GB2312的一倍.
所以增长了一倍.再加上一个尾导空间所以长度3如果我要判断$chr的长度是10就是字母汉字或特殊字符.请问应该怎么判断呢?因为字母是一个字节.

解决方案 »

  1.   

    mb_开头的函数来判断http://cn.php.net/mb_strlen
      

  2.   

    gb码的第一个字是“啊”,其内码是1601。gb码用两各字节保存一个汉字,用ord函数可以看到“啊”的字符编码是176,161。也可以看成是 160+16,160+1,用16进制表示就是A0+10,A0+1。所以汉字的gb码就是把内码拆开分别再加上A0。gb编码表,高位的最大数是 87(16进制是57),而且不管是高位还是低位,都不会大于5F,否则会溢出。-------------------------------------------------------------UTF-8就是以8位为单元对UCS进行编码。从UCS-2到UTF-8的编码方式如下:UCS-2编码(16进制) UTF-8 字节流(二进制)
    0000 - 007F         0xxxxxxx
    0080 - 07FF         110xxxxx 10xxxxxx
    0800 - FFFF         1110xxxx 10xxxxxx 10xxxxxx  例如“汉”字的Unicode编码是6C49。6C49在0800-FFFF之间,所以肯定要用3字节模板了:1110xxxx 10xxxxxx 10xxxxxx。将6C49写成二进制是:0110 110001 001001, 用这个比特流依次代替模板中的x,得到:11100110 10110001 10001001,即E6 B1 89。