Esta respuesta apareció en la parte superior de mis resultados de búsqueda de Google, pero no era correcta, así que:
La confusión probablemente se deba a que se están probando diferentes versiones de mysql.
- La versión 4 cuenta bytes
- La versión 5 cuenta caracteres
http://dev.mysql.com/doc /refman/5.0/en/string-type-overview.html
MySQL interpreta las especificaciones de longitud en las definiciones de columnas de caracteres en unidades de caracteres. (Antes de MySQL 4.1, las longitudes de las columnas se interpretaban en bytes). Esto se aplica a los tipos CHAR, VARCHAR y TEXT.
Curiosamente (no lo había pensado) la longitud máxima de una columna varchar se ve afectada por utf8 de la siguiente manera:
La longitud máxima efectiva de un VARCHAR en MySQL 5.0.3 y versiones posteriores está sujeta al tamaño máximo de fila (65 535 bytes, que se comparte entre todas las columnas) y al juego de caracteres utilizado. Por ejemplo, los caracteres utf8 pueden requerir hasta tres bytes por carácter, por lo que una columna VARCHAR que utiliza el conjunto de caracteres utf8 puede declararse con un máximo de 21 844 caracteres.