2010-01-27 14 views
5

Me preguntaba si había alguna forma de definir la codificación predeterminada para htmlentities(). Tengo un gran proyecto que usa llamadas htmlentities por todas partes, y me preguntaba si había una manera simple de configurarlo desde ISO-8859-1 a UTF-8 como la codificación de caracteres predeterminada, usando algo simple como init_set. O posiblemente con una declaración separada namespace.Definir juego de caracteres predeterminado para htmlentities()

En su defecto, no me opondría a cambiar el nombre y reemplazar la función htmlentities para usar siempre Unicode, pero soy reacio a instalar algo tan raro (para mí) como PECL apd.

+1

¿Por qué no usar htmlspecialchars? htmlentities convierte mucho más de lo que necesita para HTML, y debido a la forma en que no solo utiliza htmlspecialchars y UTF-8 funciona, ninguno de los caracteres que convierte aparecerá en el medio de un carácter UTF-8 de varios bytes, lo que significa que en rigor, no importa si solo asume ISO-8859-1. –

Respuesta

8

Como la página de manual no dice nada sobre cambiar el juego de caracteres predeterminado, no creo que haya una manera de hacerlo; y no recuerdo haber visto nada sobre eso.

yo no usaría algo como APD, ya sea - en cambio, probablemente:

  • crear mi propia función, que llama a htmlentities con los parámetros correctos
  • y reemplazar cada llamada a htmlentities por una llamar a mi nueva función (esto probablemente se puede hacer automáticamente, usando unas pocas líneas de guiones)
0

solución de @Pascal Martin es sin duda correcta, también puede utilizar utf8-encode t o convertir ISO-8859-1 a UTF-8.

Y utf8_decode para convertir UTF-8 a ISO-8859-1.

+0

El problema no es el conjunto de caracteres en el que se encuentra la cadena, sino cómo lo trata la htmlentities. – amphetamachine

Cuestiones relacionadas