Pregunta

En Zend Framework, Zend_Validate_StringLength tiene una propiedad de codificación que se puede usar para convertir entre diferentes conjuntos de caracteres (utiliza iconv_set_encoding en la cadena).

¿Por qué esta parte del StringLength clase de validador? ¿Debo usar esto con las verificaciones de campo de longitud de mi cadena para hacer cumplir la UTF-8?

¿Fue útil?

Solución

Las longitudes de la cadena en PHP son el número de bytes tomados para guardar la cadena. Algunas codificaciones usan múltiples bytes (por ejemplo, dos) para almacenar un solo carácter.

Por lo tanto, si usa la codificación almacenamiento de algunos de los caracteres en múltiples bytes (por ejemplo, UNICODE UTF-8), debe usar esta codificación para determinar correctamente la longitud de la cadena. Si usa la configuración de codificación predeterminada, puede obtener resultados inexactos.

Sin embargo, creo que el valor predeterminado para todos los componentes Zend es UTF-8, que es el estándar de facto en las aplicaciones web. Lástima, este no es el predeterminado para PHP (todavía).

Otros consejos

En realidad usa iconv_set_encoding solo para probar si el servidor actual admite especificado $encoding. La comparación real se realiza con iconv_strlen().

No estoy seguro de poder recibir tu segunda pregunta. Si necesita validar la longitud de las cadenas, debe usar este validador.

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