Zend_validate_stringlength coding?
-
25-10-2019 - |
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?
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.