Pregunta

¿Realmente necesito cambiar de VARCHAR a VARBINARY y TEXT a BLOB para UTF-8 en Mysql & amp; PHP? ¿O puedo seguir con los campos CHAR / TEXT en MySQL?

¿Fue útil?

Solución

Quizás. Como jason señaló y no me di cuenta, MySQL UTF-8 solo mapea el Plano Multilingüe Básico. Sin embargo, el manual señala que "[utf8 y ucs2] son ??suficientes para casi todos los caracteres en los idiomas principales". Por lo tanto, probablemente sea seguro, pero es posible que desee comprobar qué hay en el Plano multilingüe básico solo para estar seguro.

Respuesta original

Mientras su base de datos esté utilizando UTF-8, debería poder seguir con VARCHAR y TEXT. (Como nota al margen, el manual MySQL recomienda usando VARCHAR sobre CHAR con UTF-8 para ahorrar espacio. Como este es el caso, debería ser seguro usar VARCHAR y TEXT).

Otros consejos

No necesariamente. El soporte UTF-8 de MySQL está limitado a solo 3 bytes UTF8, que incluye todo hasta e incluye Plano multilingüe básico . Es solo si necesita caracteres que están en el rango de 4 bytes que necesita usar el almacenamiento BLOB; Esto es raro, pero no totalmente infrecuente. Consulte el artículo de Wikipedia para obtener un desglose de lo que se perderá y decida si hay algo allí que deba tener.

Aquí hay un buen enlace sobre cómo tratar con UTF-8 en PHP MySQL funciona muy bien con UTF-8 si configura la colación correctamente. PHP por otro lado tiene muchos problemas.

Por supuesto, es seguro usar VARCHAR para almacenar texto UTF-8 y no se necesita VARBINARIO para eso.

VARCHAR es un " CARÁCTER CON LONGITUD VARIABLE " ;, que se adaptará perfectamente al número de BYTES necesarios para almacenar los caracteres de acuerdo con el CHARCODE seleccionado.

También hay una razón por la cual el soporte UTF-8 de MySQL está limitado a solo 3 bytes. Debería sumergirse en los documentos relacionados con UTF-8 que hablan sobre el procedimiento de codificación de UTF-8 para comprender por qué eso es correcto.

Y por último pero no menos importante: si no está seguro acerca de UTF-8, siempre puede optar por UTF-16. Sin embargo, seguirá utilizando VARCHAR, ya que se adaptará perfectamente a la longitud de byte correcta.

Licenciado bajo: CC-BY-SA con atribución
No afiliado a StackOverflow
scroll top