只适用mysql5.0以上的版本:
=========华丽丽分隔线转载如下:==========
涉及到了字符长度问题,搜索了一下,几乎千篇一律, 所以决定自己测试一下,彻底弄清楚字符长度问题.编码一律为 UTF-8 编码 :
先来测试一下 php 把一个汉字认作几个字节:
输出 3 , 证明在 UTF-8编码下, 一个汉字被认作3个字节长度.
证明 mysql 并不会对超过長度的字符报错,而是直接截断了.
证明 mysql 的 char(n) 可以直接存储 n 个汉字. 而不是 n/3 个mysql 屏蔽了具体的存储细节,而直接以实际字符的个数来决定 char存储的个数.这裏只是测试在UTF8编码下的,如果是GBK编码,可能不一样,没兴趣去测试那么多了.
LENGTH 输出的结果是 字符实际长度的!
而 CHAR_LENGTH输出的则是屏蔽了字符存储细节,是实際的字符个数!
在涉及中文环境下的php+mysql组合,最好是用 mb_strlen来检测字符长度, 而在mysql 中,使用 CHAR_LENGTH来检测字符长度,这样能做到中英文统一处理.
utf8_general_ci 不区分大小写,这個你在注册用户名和邮箱的时候就要使用