htmlspecialchars dando salida en blanco

El uso de htmlspecialchars y htmlentities está causando salidas en blanco de elementos tales como un símbolo e incluso comillas simples. Obviamente, esto es absolutamente inútil, sin embargo, la salida de los datos sin utilizar caracteres html da como resultado este símbolo para ambos . ¿Alguna razón por la que esto está ocurriendo?

aquí está el código que está causando el problema:

 

Esa cadena no está codificada en encoding UTF-8 válida. Podría estar en otra encoding como UTF-16 o tal vez contenga algo de basura binaria que no se corresponda con ningún formato.

La conclusión es que, como ha especificado “UTF-8” como el parámetro de tipo de encoding de htmlspecialchars (), devolverá una cadena vacía si la cadena no cumple con “UTF-8”. Lo dice en el manual de PHP .

Una solución simple es usar el indicador de sustitución o ignorar. Cambio:

 htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT, "UTF-8") 

A:

 htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_SUBSTITUTE, "UTF-8") 

O:

 htmlspecialchars($aboutarray[0]['about_us'], ENT_COMPAT|ENT_IGNORE, "UTF-8") 

Nota: ENT_IGNORE elimina los bytes no conformes. Esto podría causar un problema de seguridad . Es mejor comprender realmente el contenido de su cadena y cómo se codifica. Corrija el origen del problema en lugar de usar el sencillo arreglo ENT_IGNORE.

Debería preguntarse por qué su cadena no está codificada en UTF-8 … debería ser, pero no lo es.

Por casualidad, acabo de encontrar este problema también; puede leer detalles sobre por qué se devuelve una cadena vacía aquí .