Los caracteres UTF-8 pueden ocupar hasta 4 bytes cada uno, no 2 como usted supone. UTF-8 is a variable-width encoding, en función del número de bits significativos en el punto de código Unicode:
- 7 bits y bajo en el punto de código Unicode: 1 byte en UTF-8
- 8 a 11 bits: 2 bytes en UTF 8
- 12 a 16 bits: 3 bytes
- 17 a 21 bits: 4 bytes
El original UTF-8 spec permite codificar hasta valores Unicode de 31 bits, teniendo un máximo de 6 bytes para codificar en UTF 8 forma. Después de que UTF-8 se hizo popular, el Consorcio Unicode declaró que nunca usarán puntos de código más allá de 2 & thinsp; - & thinsp; 1. Esto ahora está estandarizado como RFC 3629.
MySQL currently (es decir, la versión 5.6) solo admite los caracteres Unicode Basic Multilingual Plane, para los cuales UTF-8 necesita hasta 3 bytes por carácter. Eso significa que la respuesta actual a su pregunta es que su campo TEXT
puede contener al menos 21,844 caracteres.
Dependiendo de cómo se mire, los límites reales son superiores o inferiores a lo siguiente:
Si se supone, como yo, que la limitación BMP, finalmente, se levantará en MySQL o una de itsforks, no debe contar con poder almacenar más de 16,383 caracteres en ese campo si su cliente MySQL permite la entrada de texto Unicode arbitraria.
Por otro lado, puede aprovechar el hecho de que UTF-8 es una codificación de ancho variable. Si sabe que su texto es en su mayoría inglés simple con solo caracteres ocasionales que no son ASCII, su límite efectivo en la práctica podría acercarse al límite máximo de 64 & thinsp; KB & thinsp; - & thinsp; 1 carácter.
respuesta corta para sus ojos: esto --- --- http://pastebin.com/eYUPppw6 (21844 caracteres de 3 bytes UTF-8) – Sharky