cuando tiene un conjunto de caracteres diferente de UTF-8 y necesita ponerlo en formato JSON para migrarlo a un DB, hay dos métodos que se pueden usar en PHP, llamando a utf8_encode() e iconv() . Me gustaría saber cuál tiene mejor rendimiento y cuándo es conveniente usar uno u otro.iconv() vs. utf8_encode()
Respuesta
cuando se tiene un conjunto de caracteres diferente de UTF-8
Nop - utf8_encode()
es adecuado única para la conversión de una cadena ISO-8859-1 a UTF-8. Iconv proporciona una gran cantidad de codificaciones de origen y destino.
Rendimiento, no tengo idea de cómo funciona utf8_encode()
internamente y qué bibliotecas utiliza, pero mi predicción es que no habrá mucha diferencia, al menos no en cantidades "normales" de datos en los bytes o kilobytes . Si tiene dudas, haga un punto de referencia.
que tienden a utilizar iconv()
porque es más claro que hay una conversión del juego de caracteres de A a B. conjunto de caracteres
Además, iconv()
proporciona un control más detallado sobre qué hacer cuando encuentra datos no válidos. Agregar //IGNORE
al conjunto de caracteres objetivo hará que caiga silenciosamente los caracteres no válidos. Esto puede ser útil en ciertas situaciones.
Le recomiendo que escriba su propia función. Será de 2-3 líneas de longitud y será mejor que luchar con problemas de configuración regional, iconv, etc.
Por ejemplo: Fix Turkish Charset Issue Html/PHP (iconv?)
¿Y si el autor quiere un enfoque donde no conoce todos los caracteres de entrada posibles? –
- 1. iconv o mbstring?
- 2. Uninitialised Constant Iconv
- 3. transliteración con Iconv en Ruby
- 4. Eliminar acentos sin usar iconv
- 5. iconv formato Unicode entrada desconocida
- 6. PHP utf8_encode() convierte espacios en espacios sin interrupción
- 7. ¿Cómo instalar iconv-devel en CentOS 5.6?
- 8. advertencia iconv desaprobación con el rubí 1.9.3
- 9. archivo de cambio OSX codificación (iconv) recursivo
- 10. PHP: Tratar caracteres especiales con iconv
- 11. Convierta UTF8 a UTF16 con iconv
- 12. ¿Cómo convertir cualquier formato posible a UTF-8 usando Iconv?
- 13. ¿Por qué el iconv de PHP necesita setlocale?
- 14. ¿Qué factores influyen en una conversión satisfactoria de iconv() TRANSLIT?
- 15. ¿Cómo enumerar las codificaciones de Iconv válidas en Ruby?
- 16. Creando los últimos binarios de iconv y libxml2 en Win32
- 17. ¿Cuál es la diferencia entre iconv() y mb_convert_encoding() en PHP?
- 18. ¿Cómo usar iconv para la conversión de utf8?
- 19. No se pudo construir la gema iconv en ruby 1.9.2
- 20. en `require ': No existe el fichero a cargar - iconv (LoadError)
- 21. iconv UTF-8 // ignora todavía produce el "carácter ilegal" error
- 22. Internacionalizar las mejores prácticas de contenido para usar utf8_encode() (función php)
- 23. cómo obtener la lista de codificaciones compatibles con la biblioteca de iconv en php?
- 24. iconv da "carácter ilegal" con comillas inteligentes: ¿cómo deshacerse de ellas?
- 25. Eliminación de acentos/diacríticos de cadena, preservando otros caracteres especiales (tratado mb_chars.normalize y iconv)
- 26. Cómo arreglar un problema extraño con iconv en Mac OS X
- 27. El uso de iconv para convertir de UTF-16BE a UTF-8 sin BOM
- 28. ¿Puedo usar iconv para convertir citas inteligentes de varios bytes a citas inteligentes ASCII extendidas?
- 29. J2ME VS Android VS iPhone VS Symbian VS Windows CE
- 30. TagSoup vs Jsoup vs HTML Analizador vs vs HotSax
también se puede utilizar // trasnlit para generar este tipo de conversión u \ 00f, que java decodificar automáticamente a la norma ISO-8859-1. pero no estoy seguro si va a suceder lo mismo si hay diferentes conjuntos de caracteres que se codificaron para utf-8. –
Tenga en cuenta que PHP> = 5.4.0 ahora fallará en los caracteres no válidos, incluso con el indicador '// IGNORE': https://bugs.php.net/bug.php?id=61484 – dotancohen