utf8 - ¿Cuál es la diferencia entre iconv() y mb_convert_encoding() en PHP?
utf8 encode php (2)
Desde PHP 5.4 hay un error. En algún momento, iconv devuelve una cadena nula en lugar de devolver una cadena con carácter ''similar''.
Así que deberías usar mb_convert_encoding.
¿Cuál es la diferencia entre iconv()
y mb_convert_encoding()
en PHP? ¿Uno se desempeña mejor, más rápido, etc. (por ejemplo, con codificaciones específicas)? ¿En qué situaciones se preferiría una sobre la otra?
Esto es lo que creo que ya sé:
iconv ()
- Incluido con la mayoría de las instalaciones de PHP.
- cuando se encuentran caracteres que no se pueden asignar al nuevo conjunto de caracteres, puede especificar si se convierten en un carácter ''similar'' o se ignoran.
mb_convert_encoding ()
- Por lo general requiere la instalación de la extensión php-mbstring.
- es capaz de manejar
HTML-ENTITIES
, convirtiendoHTML-ENTITIES
desde códigos hexadecimales web.
¿Hay otras diferencias?
iconv()
es solo una envoltura alrededor de la función iconv()
que se encuentra en la biblioteca del sistema C donde se ejecuta PHP (a menos que PHP esté construido con GNU iconv, en cuyo caso se usa GNU iconv). Por lo tanto, el rendimiento y las características de iconv()
dependen de dónde esté ejecutando PHP y cómo se construye.
La implementación de mb_convert_encoding()
, por otro lado, se incluye en la fuente de PHP (módulo). Incluye una biblioteca llamada libmbfl que maneja la conversión real. Por lo tanto, funciona de la misma manera, independientemente de donde estés ejecutando PHP. Hay una lista de codificaciones compatibles aquí: http://php.net/manual/en/mbstring.encodings.php
Entonces, en resumen, supongo que podría decir que mb_convert_encoding()
es más confiable de usar si desea admitir diferentes plataformas. Sin embargo, si usa iconv()
en Linux (por ejemplo), entonces admite muchas más codificaciones (consulte iconv --list
).
El rendimiento relativo de las funciones también depende de la implementación específica de iconv()
, obviamente.