Questa risposta è apparsa nella parte superiore dei miei risultati di ricerca su Google ma non era corretta, quindi:
La confusione è probabilmente dovuta alle diverse versioni di MySQL in fase di test.
- La versione 4 conta i byte
- La versione 5 conta i caratteri
http://dev.mysql.com/doc /refman/5.0/en/panoramica-tipo-stringa.html
MySQL interpreta le specifiche di lunghezza nelle definizioni delle colonne di caratteri in unità di caratteri. (Prima di MySQL 4.1, le lunghezze delle colonne venivano interpretate in byte.) Questo vale per i tipi CHAR, VARCHAR e TEXT.
È interessante notare (non ci avevo pensato) la lunghezza massima di una colonna varchar è influenzata da utf8 come segue:
La lunghezza massima effettiva di un VARCHAR in MySQL 5.0.3 e versioni successive è soggetta alla dimensione massima della riga (65.535 byte, condivisa tra tutte le colonne) e al set di caratteri utilizzato. Ad esempio, i caratteri utf8 possono richiedere fino a tre byte per carattere, quindi una colonna VARCHAR che utilizza il set di caratteri utf8 può essere dichiarata con un massimo di 21.844 caratteri.